/********************************************************************************
 *根据TestData分解的线性数据，解析展示在页面
 ********************************************************************************/
 function onloadData() {
	G_AllTest = new TestData();
	TestUI(G_AllTest);
}
window.onbeforeunload = function(event) {
    G_AllTest.addReplyJson();
}
/********************************************************************************
 函数名：TestUI
 功能：接收试题各部分数据展示在页面上
 输入参数: allTest 函数TestData的对象
 返回值: 无
 创建信息：黎萍（2014-05-29）
 修改记录：无
 审查人：陈昊（2014-06-26）
 *******************************************************************************/
function TestUI(allTest) {
    var _IsShowTopic = true;    //是否显示题目
    var _IsShowItems = true;    //是否显示选项
    var _IsShowExplain = true;  //是否显示解析
    var _IsShowUserAnswer = true;   //是否显示用户答题信息
    var _IsShowRightAnswer = true;  //是否显示正确答案
    var _IsDisabled = true;       //是否可以作答
    var _IsShowRightAndWrong = true;	//显示用户所选答案是否正确
    var _selected = 0;	//从模拟考场进入答题界面，用户选择答案后，标记该值为1，提交批阅后，修改状态为0；用于控制上下一题时选项的选中状态
    var _viewCount = 0;	//简答题、填空题已做过/浏览的试题数量
	var _closeUserScore = 0;	//查看考试情况进入页面，默认显示用户成绩，关闭后，不在显示成绩弹窗

    var _replyStartTime = new Date();	//答题开始时间
    var userID = G_Cookie.getUserID();
    var examID = G_Prg.getQueryString('examID');

    var _fromUrl = G_Prg.getQueryString('fromUrl');;//G_Prg.getQueryString('fromUrl');//
    var _htmlTemplate = ''; //保存的html模板
	var doTest = false;	//标记点击了答题按钮进行操作 
	var _blurFlag = '';	//标记简答题、填空题在失去焦点时，控制不显示笔记。
	var timer = '';//计时器变量
	var _curPage=G_Prg.getQueryString('page');
    if(!_curPage){
        _curPage=1;
    }
	var _curTestNO = G_Prg.getQueryString('testNO');	//当前试题编号
    if(!_curTestNO){
        _curTestNO = 0;
    }
	var allTestID = G_Prg.getQueryString('allTestID');	//当前试题编号
	if(allTestID){
		allTestID=parseInt(allTestID);
	}
    var _gAllTest = allTest; //TestData 类对象

    //_curTestNO = _gAllTest.getTestNO(allTestID);
	var _curTestIndex = parseInt(_curTestNO);		//当前试题索引
    if(_curTestNO !== null){
        _gAllTest.move(_curTestIndex); //设置当前试题编号
    }
	var _totalTime = parseInt(_gAllTest.getTestTime());	//考试时间
    var totalTime=_totalTime/1000;//考试时间由毫秒转换为秒
    var _isExam = 0;//是否是考试模式，默认是练习模式
    var type = G_Prg.getQueryString('type');
    if(_fromUrl === 'default.html' && type === 'exam'){
        _isExam = 1;
        _setState('mock');
		G_Prg.$('timeDiv').style.display = 'block';
        //G_Prg.$('note').style.display = 'none';
        //G_Prg.$('fav').style.display = 'none';
        //G_Prg.$('removeFav').style.display = 'none';
        //G_Prg.$('Card-rightPct').style.display = 'none';
        //G_Prg.$('Card-pctRight').style.display = 'none';	//题卡上的正确率
        //G_Prg.$('barRateDiv').style.display = 'none';	//进度条上的正确率
		
    }else{
        _setState('uncommited');
		G_Prg.$('timeDiv').style.display = 'none';
    }

    if (type === 'lastStudy') {
        _countStudyRate();
        G_Prg.$('totalPageNum').innerHTML = _gAllTest.getTestCount();
        G_Prg.$('totalPageNum2').innerHTML = _gAllTest.getTestCount();
    } else { 
	    G_Prg.$('totalPageNum').innerHTML = _gAllTest.getTestCount();
	    G_Prg.$('totalPageNum2').innerHTML = _gAllTest.getTestCount();
	    G_Prg.$('Card-countDown').innerHTML = _gAllTest.getTestCount();
    }
	
    _init(); //初始化试题
	_myTimer();	//计时器
    //_listenKeyborad();//监听键盘事件
    /********************************************************************************
     函数名：_init
     功能：初始化试题
     输入参数:dragFlag 滑动标识(0：初始化，1：上一题，2：下一题)
     返回值: 无
     创建信息：黎萍（2014-06-04）
     修改记录：黎萍（2014-06-13）去掉滑动效果
	 修改记录：黎萍（2015-06-09）添加封壳版页面控制
               喻彦（2015-07-06）批阅按钮字体改为蓝色
     审查人：陈昊（2014-06-26）
     *******************************************************************************/
    function _init() {
        var curTest = _gAllTest.getCurTest();
        _showCurTest(curTest);
        if(!_isExam){
            //_setFavTestInfos();//设置笔记收藏
        }
        _setClickEvent(curTest); //设置页面单击事件
        _setTestEvent(curTest); //设置选项事件
    }
    /********************************************************************************
     函数名：_showCurTest
     功能：显示试题
     输入参数: curTeset 当前试题;
     返回值: 无
     创建信息：黎萍（2014-06-04）
     修改记录：韦友爱（2014-07-14）修改笔记内容的判断及显示
     韦友爱（2014-08-06）添加试题题型说明的显示
     韦友爱（2014-08-13）添加试题是否第一次显示的判断
     审查人：陈昊（2014-06-26）
     *******************************************************************************/
    function _showCurTest(curTest) {
		//if(_fromUrl !== 'examDefault.html' || (_fromUrl === 'examDefault.html' &&_gAllTest.getState(curTest.testNO-1) === 'marked')){
        if(_gAllTest.getLastAction(curTest.testNO-1) && (curTest.testType === 'JDTEST' || curTest.testType === 'TKTEST') && _gAllTest.getAction(curTest.testNO-1)=== 'addNote'){//此判断控制简答题在查看答案后，再添加笔记时能保持之前查看答案的状态
            _setState(_gAllTest.getState(curTest.testNO-1),_gAllTest.getLastAction(curTest.testNO-1));
        }else{
            _setState(_gAllTest.getState(curTest.testNO-1),_gAllTest.getAction(curTest.testNO-1));
        }
        G_Prg.$('chaptername').innerHTML = _gAllTest.getPaperTitle();//; //页面头部显示章节名称
        if(curTest === '' || curTest === undefined){
            return;
        }
        var testType = curTest.testType; //根据题型调用对应的展示数据的函数
        _hideTestTemplet();
        switch (testType) {
            case 'A3TEST':
                _showA3Test(curTest);
                break;
            case 'ATEST':
                _showATest(curTest);
                break;
            case 'BTEST':
                _showBTest(curTest);
                break;
            case 'XTEST':
                _showXTest(curTest);
                break;
            case 'PDTEST':
                _showPDTest(curTest);
                break;
            case 'JDTEST':
                _showJDTest(curTest);
                break;
            case 'TKTEST':
                _showTKTest(curTest);
                break;
            default:
                G_Prg.throwErr('程序运行错误，TestUI._showCurTest：testType = "' + testType + '"，无法解析题型');
                break;
        }
    }
    /********************************************************************************
     函数名：_hideTestTemplet
     功能：加载试题之前，将所有试题模板状态设置为隐藏
     输入参数：无
     返回值: 无
     创建信息：黎萍（2014-05-30）
     修改记录：黎萍（2014-07-25）根据题型判断，控制显示下一题按钮
     审查人：陈昊（2014-06-26）
     *******************************************************************************/
    function _hideTestTemplet() {
        G_Prg.$('radio_exam').style.display = 'none';
        G_Prg.$('checkbox_exam').style.display = 'none';
        G_Prg.$('pd_exam').style.display = 'none';
        G_Prg.$('jd_exam').style.display = 'none';
        G_Prg.$('tk_exam').style.display = 'none';
        G_Prg.$('A3_checkbox_exam').style.display = 'none';
        G_Prg.$('A3_radio_exam').style.display = 'none';
        G_Prg.$('B_checkbox_exam').style.display = 'none';
        G_Prg.$('B_radio_exam').style.display = 'none';
    }
	/********************************************************************************
     函数名：_setState
     功能：设置操作试题的状态
     输入参数：state 操作试题的状态；action 操作试题的动作
     返回值: 无
     创建信息：黎萍（2014-09-04）
     修改记录：无
     审查人：无
     *******************************************************************************/
    function _setState(state,action) {
        switch(state) {
            case 'uncommited'://未提交状态
                _IsShowTopic = true;
                _IsShowItems = true;
                _IsDisabled = true;
                _IsShowExplain = false;
                _IsShowRightAnswer = false;
                _IsShowUserAnswer = false;
                _IsShowNote = false;
                _IsShowRightAndWrong = false;
                break;
            case 'commited'://已提交
                _IsShowTopic = true;
                _IsShowItems = true;
                _IsDisabled = true;
                _IsShowExplain = true;
                _IsShowRightAnswer = false;
                _IsShowUserAnswer = false;
                _IsShowRightAndWrong = true;
                break;
            case 'mock':	//模拟考场
                _IsShowTopic = true;
                _IsShowItems = true;
                _IsDisabled = true;
                _IsShowExplain = false;
                _IsShowRightAnswer = false;
                _IsShowUserAnswer = true;
                _IsShowNote = false;
                _IsShowRightAndWrong = false;
                break;
            case 'marked'://批阅状态
                _IsShowTopic = true;
                _IsShowItems = true;
                _IsDisabled = false;
                _IsShowExplain = true;
                _IsShowRightAnswer = true;
                _IsShowUserAnswer = true;
                _IsShowRightAndWrong = true;
                break;
            case 'mock_marked'://强制批阅状态
                _IsShowTopic = true;
                _IsShowItems = true;
                _IsDisabled = false;
                _IsShowExplain = false;
                _IsShowRightAnswer = false;
                _IsShowUserAnswer = true;
                _IsShowRightAndWrong = false;
                break;
        }
        switch (action){
            case 'addNote':
                _IsShowNote = true;
                _IsShowOtherNote = true;
                break;
            case 'reciteWithAnswer':
                _IsShowRightAnswer = true;
                _IsShowNote = true;
                _IsShowOtherNote = true;
                _IsShowExplain = true;
                break;
            case 'reciteNoAnswer':
                _IsShowRightAnswer = false;
                _IsShowNote = false;
                _IsShowOtherNote = false;
                _IsShowExplain = false;
                _IsShowUserAnswer = true;
                break;
            case 'lookAnswer':
                _IsShowNote = true;
                _IsShowOtherNote = true;
                _IsShowExplain = true;
                break;
            case 'lookNoAnswer':
                _IsShowNote = false;
                _IsShowOtherNote = false;
                _IsShowExplain = false;
                break;
        }
    }
    /********************************************************************************
     函数名：_setID
     功能：获取试题信息所在html标签的id，用来控制对应的事件信息
     输入参数:无
     返回值：idArr 存储试题信息层所在id的伪哈希表
     创建信息：黎萍（2014-08-04）
     修改记录：无
     审查人：无
     *******************************************************************************/
    function _setID(curTest){
        var idArr = new Object();	//存储试题信息层所在id的伪哈希表
        if(curTest === '' || curTest === undefined){
            return;
        }
        var testType = curTest.testType; //试题类型
        var subTestType = curTest.subTestType; //针对A3和B题型的小题的试题类型进行定义
        switch (testType) {
            case 'ATEST':
                //以下，题干信息ID
                idArr['testTitle'] = 'radio_testTitle';
                idArr['testPoint'] = 'radio_testPoint';
                //题干信息结束
				idArr['checkIcon'] = 'radio_checkIcon'
                idArr['itemUiID'] = 'radio_Items'
                idArr['itemID'] = 'radio_items_';
                idArr['itemNameID'] = 'radio_';
                idArr['itemTextID'] = 'radio_itemText_';
                idArr['resultID'] = 'radio_result';
                idArr['moveNextDiv'] = 'radio_moveNextDiv';
                idArr['operate'] = 'radio_operate';
                idArr['answerDiv'] = 'radio_answer';
                idArr['explainDiv'] = 'radio_explain';
                break;
            case 'XTEST':
                //以下，题干信息ID
                idArr['testTitle'] = 'checkbox_testTitle';
                idArr['testPoint'] = 'checkbox_testPoint';
                //题干信息结束
				idArr['checkIcon'] = 'checkbox_checkIcon'
                idArr['itemUiID'] = 'checkbox_Items'
                idArr['itemID'] = 'checkbox_items_';
                idArr['itemNameID'] = 'checkbox_';
                idArr['itemTextID'] = 'checkbox_itemText_';
                idArr['resultID'] = 'checkbox_result';
                idArr['buttonID'] = 'checkbox_btn';
                idArr['moveNextDiv'] = 'checkbox_moveNextDiv';
                idArr['operate'] = 'checkbox_operate';
                idArr['answerDiv'] = 'checkbox_answer';
                idArr['explainDiv'] = 'checkbox_explain';
                break;
            case 'A3TEST':
                if (subTestType === '不定项' || subTestType === '多项') {
                    //以下，题干信息ID
                    idArr['frontTitle'] = 'A3_checkbox_testTitle';//主标题
                    idArr['testTitle'] = 'A3_checkbox_a3test';//小标题
                	idArr['testPoint'] = 'A3_checkbox_testPoint';
                    //题干结束
					idArr['checkIcon'] = 'A3_checkbox_checkIcon'
                    idArr['itemUiID'] = 'A3_checkbox_Items'
                    idArr['itemID'] = 'A3_checkbox_items_';
                    idArr['itemNameID'] = 'A3_checkbox_';
                    idArr['itemTextID'] = 'A3_checkbox_itemText_';
                    idArr['resultID'] = 'A3_checkbox_result';
                    idArr['buttonID'] = 'A3_checkbox_btn';
                    idArr['moveNextDiv'] = 'A3_checkbox_moveNextDiv';
                    idArr['operate'] = 'A3_checkbox_operate';
                    idArr['answerDiv'] = 'A3_checkbox_answer';
                    idArr['explainDiv'] = 'A3_checkbox_explain';
                } else if (subTestType === '单项') {
                    //以下，题干信息ID
                    idArr['frontTitle'] = 'A3_radio_testTitle';//主标题
                    idArr['testTitle'] = 'A3_radio_a3test';//小标题
                	idArr['testPoint'] = 'A3_radio_testPoint';
                    //题干结束
					idArr['checkIcon'] = 'A3_radio_checkIcon'
                    idArr['itemUiID'] = 'A3_radio_Items'
                    idArr['itemID'] = 'A3_radio_items_';
                    idArr['itemNameID'] = 'A3_radio_';
                    idArr['itemTextID'] = 'A3_radio_itemText_';
                    idArr['resultID'] = 'A3_radio_result';
                    idArr['moveNextDiv'] = 'A3_radio_moveNextDiv';
                    idArr['operate'] = 'A3_radio_operate';
                    idArr['answerDiv'] = 'A3_radio_answer';
                    idArr['explainDiv'] = 'A3_radio_explain';
                } else {
                    G_Prg.throwErr('程序运行错误，TestUI._setID： A3 subTestType = "' + subTestType + '",无法解析数据');
                }
                break;
            case 'BTEST':
                if (subTestType === '不定项' || subTestType === '多项') {
                    //以下，题干信息ID
                    idArr['testTitle'] = 'B_checkbox_testTitle';
                	idArr['testPoint'] = 'B_checkbox_testPoint';
                    //题干信息结束
					idArr['checkIcon'] = 'B_checkbox_checkIcon'
                    idArr['itemUiID'] = 'B_checkbox_Items'
                    idArr['itemID'] = 'B_checkbox_items_';
                    idArr['itemNameID'] = 'B_checkbox_';
                    idArr['itemTextID'] = 'B_checkbox_itemText_';
                    idArr['resultID'] = 'B_checkbox_result';
                    idArr['buttonID'] = 'B_checkbox_btn';
                    idArr['moveNextDiv'] = 'B_checkbox_moveNextDiv';
                    idArr['operate'] = 'B_checkbox_operate';
                    idArr['answerDiv'] = 'B_checkbox_answer';
                    idArr['explainDiv'] = 'B_checkbox_explain';
                } else if (subTestType === '单项') {
                    //以下，题干信息ID
                    idArr['testTitle'] = 'B_radio_testTitle';
                	idArr['testPoint'] = 'B_radio_testPoint';
                    //题干信息结束
					idArr['checkIcon'] = 'B_radio_checkIcon'
                    idArr['itemUiID'] = 'B_radio_Items'
                    idArr['itemID'] = 'B_radio_items_';
                    idArr['itemNameID'] = 'B_radio_';
                    idArr['itemTextID'] = 'B_radio_itemText_';
                    idArr['resultID'] = 'B_radio_result';
                    idArr['moveNextDiv'] = 'B_radio_moveNextDiv';
                    idArr['operate'] = 'B_radio_operate';
                    idArr['answerDiv'] = 'B_radio_answer';
                    idArr['explainDiv'] = 'B_radio_explain';
                } else {
                    G_Prg.throwErr('程序运行错误，TestUI._setID：B subTestType = "' + subTestType + '",无法解析数据');
                }
                break;
            case 'PDTEST':
                //以下，题干信息ID
                idArr['testTitle'] = 'pd_testTitle';
                idArr['testPoint'] = 'pd_testPoint';
                //题干信息结束
				idArr['checkIcon'] = 'pd_checkIcon'
                idArr['itemUiID'] = 'pd_radio_Items'
                idArr['itemID'] = 'pd_radio_items_';
                idArr['itemNameID'] = 'pd_radio_';
                idArr['itemTextID'] = 'pd_radio_itemText_';
                idArr['resultID'] = 'pd_result';
                idArr['moveNextDiv'] = 'pd_moveNextDiv';
                idArr['operate'] = 'pd_operate';
                idArr['answerDiv'] = 'pd_answer';
                idArr['explainDiv'] = 'pd_explain';
                break;
            case 'JDTEST':
                //以下，题干信息ID
                idArr['testTitle'] = 'jd_testTitle';
                idArr['testPoint'] = 'jd_testPoint';
                //题干信息结束
				idArr['checkIcon'] = 'jd_checkIcon'
                idArr['textarea'] = 'jd_textarea';
                idArr['resultID'] = 'jd_result';
                idArr['answerID'] = 'jd_answer'
                idArr['buttonID'] = 'jd_btn';
                idArr['moveNextDiv'] = 'jd_moveNextDiv';
                idArr['operate'] = 'jd_operate';
                idArr['answerDiv'] = 'jd_answer';
                idArr['explainDiv'] = 'jd_explain';
                break;
            case 'TKTEST':
                //以下，题干信息ID
                idArr['testTitle'] = 'tk_testTitle';
                idArr['testPoint'] = 'tk_testPoint';
                //题干信息结束
				idArr['checkIcon'] = 'tk_checkIcon'
				idArr['itemOlID'] = 'tk_Items';
				idArr['itemTextID'] = 'tk_itemsText_';
				idArr['itemID'] = 'tk_items_';
                idArr['resultID'] = 'tk_result';
                idArr['answerID'] = 'tk_answer'
                idArr['buttonID'] = 'tk_btn';
                idArr['moveNextDiv'] = 'tk_moveNextDiv';
                idArr['operate'] = 'tk_operate';
                idArr['answerDiv'] = 'tk_answer';
                idArr['explainDiv'] = 'tk_explain';
                break;
            default:
                G_Prg.throwErr('程序运行错误，TestUI._setID：testType = "' + testType + '",无法解析数据');
        }
        return idArr;
    }
    /********************************************************************************
     函数名：_showTopic
     功能：显示试题题干（标题）
     输入参数：curTest 当前试题；idArr 试题所在标签的id数组
     返回值: 无
     创建信息：黎萍（2014-09-04）
     修改记录：无
     审查人：无
     *******************************************************************************/
    function _showTopic(curTest, idArr) {
        if(_IsShowTopic){
            if(idArr['frontTitle']){
                G_Prg.$(idArr['frontTitle']).innerHTML = '<span class="info font-larger">'+ ((_curPage - 1) * 50 + curTest.testNO)  + '</span><span class="info">[' + curTest.testStyle + ']</span>' + curTest.frontTitle; //标题
                G_Prg.$(idArr['testTitle']).innerHTML  = curTest.title; //小标题;
            }else{
                G_Prg.$(idArr['testTitle']).innerHTML = '<span class="info font-larger">'+ ((_curPage - 1) * 50 + curTest.testNO) + '</span><span class="info">[' + curTest.testStyle + ']</span>' + curTest.title ; //标题
            }
        }else{
            if(idArr['frontTitle']){
                G_Prg.$(idArr['frontTitle']).style.display = 'none';
            }
            G_Prg.$(idArr['testTitle']).style.display = 'none';
        }
    }
    /********************************************************************************
     函数名：_showItems
     功能：显示试题的选项
     输入参数：curTest 当前试题；idArr 试题所在标签的id数组
     返回值: 无
     创建信息：黎萍（2014-09-04）
     修改记录：无
     审查人：无
     *******************************************************************************/
    function _showItems(curTest, idArr) {
        var selectedItems = curTest.selectedItems;
        var testType = curTest.testType; //试题类型
        var subTestType = curTest.subTestType; //针对A3和B题型的小题的试题类型进行定义
        for (var i = 0; i < selectedItems.length; i++) {
            G_Prg.$(idArr['itemID'] + i).style.display = 'block';
            if(testType === 'XTEST' || subTestType === '不定项' || subTestType === '多项' ){
                G_Prg.$(idArr['itemID'] + i).className = 'checkboxDefaultImg'; //指定选项前面图标类样式
            } else if (testType === 'ATEST' || testType === 'PDTEST' || subTestType === '单项') {
                G_Prg.$(idArr['itemID'] + i).className = 'radioDefaultImg'; //指定选项前面图标类样式
            }
            if(curTest.testType !=='PDTEST'){
                G_Prg.$(idArr['itemID'] + i).lang = selectedItems[i].ItemName;
                G_Prg.$(idArr['itemID'] + i).innerHTML = selectedItems[i].ItemName + '.' + selectedItems[i].Content.replace(/(^\s+)|(\s+$)/g,"");//去掉前后空格
                      
            }
        }
        var arrLen = G_Prg.$(idArr['itemUiID']).getElementsByTagName('li').length;
        for (var i = selectedItems.length; i < arrLen; i++) {
            G_Prg.$(idArr['itemID'] + i).style.display = 'none'; //隐藏没有赋值到的选项
        }
        if (_IsShowItems) {
            for (var i = 0; i < selectedItems.length; i++) {
                G_Prg.$(idArr['itemID'] + i).style.display = 'block';
            }
        }else{
            for (var i = 0; i < selectedItems.length; i++) {
                G_Prg.$(idArr['itemID'] + i).style.display = 'none';
            }
            var arrLen = G_Prg.$(idArr['itemUiID']).getElementsByTagName('li').length;
            for (var i = selectedItems.length; i < arrLen; i++) {
                G_Prg.$(idArr['itemID'] + i ).style.display = 'none'; //隐藏没有赋值到的选项
            }
        }
    }
    /********************************************************************************
     函数名：_showResult
     功能：显示试题的正确答案和试题解析
     输入参数：curTest 当前试题；idArr 试题所在标签的id数组
     返回值: 无
     创建信息：黎萍（2014-09-04）
     修改记录：谢建沅 答案去掉滚动条控制（2014-09-26）
				黎萍（2015-06-15）背题模式：简答题、填空题点击查看答案，出现正确答案，解析为无时不需要出现解析
     审查人：无
     *******************************************************************************/
    function _showResult(curTest, idArr) {
        G_Prg.$(idArr['answerDiv']).innerHTML = '【答案】：' + curTest.answer; //答案
        G_Prg.$(idArr['explainDiv']).innerHTML = '【解析】：' + curTest.explain; //解析
        G_Prg.$(idArr['testPoint']).innerHTML = '【考点】：' + curTest.testPoint; //考点
        G_Prg.$(idArr['explainDiv']).style.display = 'block'; //隐藏试题解析
		G_Prg.$(idArr['testPoint']).style.display = 'block';
        if (_IsShowExplain) {
            G_Prg.$(idArr['resultID']).style.display = 'block';
        }else{
            G_Prg.$(idArr['resultID']).style.display = 'none';
        }
		if(_selected === 1){
            G_Prg.$(idArr['resultID']).style.display = 'none';
		}
		G_Prg.$(idArr['answerDiv']).style.display = 'block';
		G_Prg.$(idArr['resultID']).style.marginBottom = '8px';
    }
	/********************************************************************************
     函数名：_editNote
     功能：编辑笔记
     输入参数：无
     返回值：无
     创建信息：韦友爱（2015-06-05）
     修改记录：无
     审查人：无
     *******************************************************************************/
    function _editNote(){
        G_Prg.$('myNote') .className='js-noteArea wrap-notes-textarea border--blue';
        G_Prg.$('myNote') .disabled='';
        G_Prg.$('editNote').style.display='none';
		G_Prg.$('noteTime').style.display='none';
        G_Prg.$('noteTip').style.display='block';
		G_Prg.$('noteTip').innerHTML = '限150个字';
        G_Prg.$('saveNote').className='angle-button';
		G_Prg.$('saveNote').style.display='block';
    }
	/********************************************************************************
     函数名：_saveNote
     功能：保存笔记
     输入参数：无
     返回值：无
     创建信息：韦友爱（2015-06-05）
     修改记录：无
     审查人：无
     *******************************************************************************/
    function _saveNote(){
        var curTest=_gAllTest.getCurTest();
        var userOldNote = _gAllTest.getUserNote(curTest.testNO-1);
        var time=_gAllTest.getTime(curTest.testNO-1);
        if(userOldNote===''){
            userOldNote=curTest.userNote;
        }
        var userNote = G_Prg.$('myNote').value;
        if(!userOldNote&&!userNote){
            G_Prg.alert('请先输入笔记内容');
            return;
        }
        G_Prg.$('myNote') .className='js-noteArea wrap-notes-textarea';
        G_Prg.$('myNote') .disabled='disabled';
        G_Prg.$('editNote').style.display='';
        G_Prg.$('noteTip').style.display='none';
        G_Prg.$('saveNote').style.display='none';
        G_Prg.$('noteTime').style.display='block';
        var time=G_Prg.datetimeFormat(new Date(),'yyyy/MM/dd hh:mm:ss');
        if(userOldNote&&!userNote){
            G_Prg.popMsg('笔记删除成功','1000','true');
        }else{
            G_Prg.popMsg('保存成功','1000','true');
            G_Prg.$('noteTime').innerHTML=time;
        }
        _gAllTest.setUserNote(userNote);
        _gAllTest.setTime(time);
		//var userID = 107;
		//var examID = 231;
       _gAllTest.setMyNote(curTest, userNote,examID,userID);
        
    }
	/********************************************************************************
     函数名：_showUserNote
     功能：显示试题的笔记
     输入参数：curTest 当前试题；isWrite 是否为编辑状态
     返回值: 无
     创建信息：韦友爱（2015-06-05）
     修改记录：韦友爱（2015-06-10）添加对userID的判断
     审查人：无
     *******************************************************************************/
    function _showUserNote(curTest, isWrite) {
		var userID = G_Cookie.getUserID();
        if(!userID||!_IsShowNote){
            G_Prg.$('note-wrapper').style.display='none';//隐藏笔记框
            return;
        }
        G_Prg.$('note-wrapper').style.display='block';//显示笔记框
        G_Prg.$('noteNum').innerHTML='第'+curTest.testNO +'题笔记';
		var userNote = _gAllTest.getUserNote(curTest.testNO-1);
        var time=_gAllTest.getTime(curTest.testNO-1);
        if(userNote===''){
            userNote=curTest.userNote?curTest.userNote:'';
            time=curTest.time?curTest.time:'';
        }
        G_Prg.$('myNote').value=userNote;
        if(userNote){
            G_Prg.$('noteTime').innerHTML=time;
        }else{
            G_Prg.$('noteTime').innerHTML='';
        }
        if(!userNote||isWrite){
            G_Prg.$('myNote') .className='js-noteArea wrap-notes-textarea border--blue';
            G_Prg.$('myNote') .disabled='';
            G_Prg.$('editNote').style.display='none';
            G_Prg.$('noteTime').style.display='none';
            G_Prg.$('noteTip').style.display='block';
            G_Prg.$('saveNote').className='angle-button';
            G_Prg.$('saveNote').style.display='block';
			G_Prg.$('note-wrapper').style.display='block';
        }else{
            G_Prg.$('myNote') .className='js-noteArea wrap-notes-textarea';
            G_Prg.$('myNote') .disabled='disabled';
            G_Prg.$('editNote').style.display='block';
            G_Prg.$('noteTime').style.display='block';
			G_Prg.$('noteTip').style.display='none';
			if(_gAllTest.getState(curTest.testNO-1) === 'marked'&&!userNote){
				G_Prg.$('noteTip').innerHTML='请输入笔记内容';
				G_Prg.$('noteTip').style.display='block';
				G_Prg.$('noteTime').style.display='none';
			}
            G_Prg.$('saveNote').style.display='none';
        }
       /* var yesCallBack=function(arrUserNote,curPage){
            _createOtherNoteList(arrUserNote,curPage);
        }
        var noNoteCallBack=function(){
            G_Prg.$('otherNoteCount').style.display='none';
        }
        _gAllTest.getOtherUserNote(curTest,1,yesCallBack,noNoteCallBack);*/
        //G_Prg.$('myNote').focus(); 这行代码在IE8浏览器下，答题后会影响试题的正确展示
    }
    /********************************************************************************
     函数名：_showRadioTest
     功能：组合拼接单选试题（ATEST、PDTEST、单项）
     输入参数：curTest 当前试题
     返回值: 无
     创建信息：黎萍（2014-09-04）
     修改记录：无
     审查人：无
     *******************************************************************************/
    function _showRadioTest(curTest) {
        var idArr = _setID(curTest);
        _showTopic(curTest, idArr);
        _showItems(curTest, idArr);
        _showResult(curTest, idArr);
        _mockRadioDone(curTest,idArr);
        //_showUserNote(curTest);	//显示用户笔记
        _radioRightAnswer(curTest,idArr);	//批阅：未答试题显示正确答案
        _radioDone(curTest, idArr);	//答题：显示用户所答是否正确
    }
    /********************************************************************************
     函数名：_showCheckboxTest
     功能：组合拼接多选试题（XTEST、多项、不定项）
     输入参数：curTest 当前试题
     返回值: 无
     创建信息：黎萍（2014-09-04）
     修改记录：无
     审查人：无
     *******************************************************************************/
    function _showCheckboxTest(curTest) {
        var idArr = _setID(curTest);
        _showTopic(curTest, idArr);
        _showItems(curTest, idArr);
        _showResult(curTest, idArr);
        //_showUserNote(curTest);	//显示用户笔记
        _mockCheckboxDone(curTest,idArr);	//答题：用户仅选择了答案并未提交答案
        _checkboxRightAnswer(curTest,idArr);	//批阅：未答试题显示正确答案
        _checkboxDone(curTest, idArr);  //答题：显示用户所答是否正确
    }
    /********************************************************************************
     功能：组合拼接主观试题（简答题）
     输入参数：curTest 当前试题
     返回值: 无
     最后修改人：黎萍（2015-06-18）
     修改内容：无
     *******************************************************************************/
    function _subjectiveJDTest(curTest) {
        var idArr = _setID(curTest);
        _showTopic(curTest, idArr);
        _showResult(curTest, idArr);
        //_showUserNote(curTest);	//显示用户笔记
        _textJDInputed(curTest, idArr);  //答题：显示用户所答是否正确
    }
	
    /********************************************************************************
     功能：组合拼接主观试题（填空题）
     输入参数：curTest 当前试题
     返回值: 无
     最后修改人：黎萍（2015-06-18）
     修改内容：无
     *******************************************************************************/
    function _subjectiveTKTest(curTest) {
        var idArr = _setID(curTest);
        _showTopic(curTest, idArr);
		//如果是填空题，则根据答案控制输入框的显示
		var answerArr = '';
		var answer = curTest.answer;
		if(answer.indexOf('<img') < 0){
			answerArr = curTest.answer.split('；');	
		}else{
			answerArr = [curTest.answer];	
		}
		var arrLen = G_Prg.$(idArr['itemOlID']).getElementsByTagName('li').length;
		for(var i = 0;i < arrLen; i++){
			if(i < answerArr.length){
				G_Prg.$(idArr['itemID'] + i).style.display = '';
				G_Prg.$(idArr['itemTextID'] + i).value = '';
			} else{
				G_Prg.$(idArr['itemID'] + i ).style.display = 'none';
			}
		}
		_mockTkDone(curTest,idArr);
        _showResult(curTest, idArr);
        //_showUserNote(curTest);	//显示用户笔记
        _textTKInputed(curTest, idArr);  //答题：显示用户所答是否正确
    }

    /********************************************************************************
     函数名：_showATest
     功能：ATEST题型的试题展示
     输入参数: curTeset 当前试题;
     返回值: 无
     创建信息：黎萍（2014-05-30）
     修改记录：黎萍（2014-09-04） 修改解析展示试题方式
     审查人：兰涛（2014-06-26）
     *******************************************************************************/
    function _showATest(curTest) {
        _showRadioTest(curTest);
        G_Prg.$('radio_exam').style.display = 'block';
    }
    /********************************************************************************
     函数名：_showXTest
     功能：XTEST题型的试题展示
     输入参数: curTeset 当前试题;
     返回值: 无
     创建信息：黎萍（2014-05-30）
     修改记录：黎萍（2014-09-04） 修改解析展示试题方式
     审查人：兰涛（2014-06-26）
     *******************************************************************************/
    function _showXTest(curTest) {
        _showCheckboxTest(curTest);
        G_Prg.$('checkbox_exam').style.display = 'block';
    }
    /********************************************************************************
     函数名：_showTKTest
     功能：TKTEST题型的试题展示
     输入参数: curTeset 当前试题;
     返回值: 无
     创建信息：黎萍（2014-05-30）
     修改记录：黎萍（2014-09-04） 修改解析展示试题方式
     审查人：兰涛（2014-06-26）
     *******************************************************************************/
    function _showTKTest(curTest) {
		var idArr = _setID(curTest);
		var arrLen = G_Prg.$(idArr['itemOlID']).getElementsByTagName('li').length;
		for(var i = 0;i < arrLen; i++){
			G_Prg.$(idArr['itemTextID'] + i).value = '';
		}
        _subjectiveTKTest(curTest);
        G_Prg.$('tk_exam').style.display = 'block';
    }
    /********************************************************************************
     函数名：_showJDTest
     功能：JDTEST题型的试题展示
     输入参数: curTeset 当前试题;
     返回值: 无
     创建信息：黎萍（2014-05-30）
     修改记录：黎萍（2014-09-04） 修改解析展示试题方式
     审查人：兰涛（2014-06-26）
     *******************************************************************************/
    function _showJDTest(curTest) {
        G_Prg.$('jd_textarea').value = '';
        _subjectiveJDTest(curTest);
        G_Prg.$('jd_exam').style.display = 'block';
    }
    /********************************************************************************
     函数名：_showPDTest
     功能：PDTEST题型的试题展示
     输入参数: curTeset 当前试题;
     返回值: 无
     创建信息：黎萍（2014-05-30）
     修改记录：黎萍（2014-09-04） 修改解析展示试题方式
     审查人：兰涛（2014-06-26）
     *******************************************************************************/
    function _showPDTest(curTest) {
        _showRadioTest(curTest);
        G_Prg.$('pd_exam').style.display = 'block';
    }
    /********************************************************************************
     函数名：_showA3Test
     功能：A3TEST题型的试题展示
     输入参数: curTeset 当前试题;
     返回值: 无
     创建信息：黎萍（2014-05-30）
     修改记录：黎萍（2014-09-04） 修改解析展示试题方式
     审查人：兰涛（2014-06-26）
     *******************************************************************************/
    function _showA3Test(curTest) {
        var subTestType = curTest.subTestType;
        if (subTestType === '多项' || subTestType === '不定项') {
            _showCheckboxTest(curTest);
            G_Prg.$('A3_checkbox_exam').style.display = 'block';
        } else if (subTestType === '单项') {
            _showRadioTest(curTest);
            G_Prg.$('A3_radio_exam').style.display = 'block';
        } else {
            G_Prg.throwErr('程序运行错误，TestUI._showA3Test：subTestType = "' + subTestType + '"，无法解析题型');
        }
    }
    /********************************************************************************
     函数名：_showBTest
     功能：BTEST题型的试题展示
     输入参数: curTeset 当前试题;
     返回值: 无
     创建信息：黎萍（2014-05-30）
     修改记录：黎萍（2014-09-04） 修改解析展示试题方式
     审查人：兰涛（2014-06-26）
     *******************************************************************************/
    function _showBTest(curTest) {
        var subTestType = curTest.subTestType;
        if (subTestType === '多项' || subTestType === '不定项') {
            _showCheckboxTest(curTest);
            G_Prg.$('B_checkbox_exam').style.display = 'block';
        } else if (subTestType === '单项') {
            _showRadioTest(curTest);
            G_Prg.$('B_radio_exam').style.display = 'block';
        } else {
            G_Prg.throwErr('程序运行错误，TestUI._showBTest：subTestType = "' + subTestType + '"，无法解析题型');
        }
    }
    /********************************************************************************
     函数名：_seClickEvent
     功能：设计做题页面中所有的按钮的单击事件
     输入参数:  无
     返回值: 无
     创建信息：黎萍（2014-05-29）
     修改记录：韦友爱（2014-07-02）添加收藏、取消收藏的单击事件
     修改记录：黎萍（2015-03-18）批阅之后禁止使用背题模式
     审查人：陈昊（2014-06-26）
     *******************************************************************************/
    function _setClickEvent(curTest) {
        G_Prg.$('movePre').onclick = function () {
            _movePre();
        }; //Pre  上一题
        G_Prg.$('moveNext').onclick = function () {
            _moveNext();
        }; //Next 下一题
		G_Prg.$('goback').onclick = function(){
			_goBackDir();
		};//返回列表按钮单击事件
		if(type === 'examReplay'){//查看考试情况，禁用批阅按钮，显示考试成绩
			if(_closeUserScore === 1){	//关闭成绩弹窗，不用再显示了
				return;	
			}
			G_Prg.$('marking').onclick = function () {};
			G_Prg.$('marking').style.color = '#666';
			G_Prg.$('markingImg').src = '../img/marking2.png';
			G_Prg.htmlContent('500px', '350px', '', _showScoreLayer(), true);
			G_Prg.$('hcdvMsgTitle').innerHTML = '练习统计';
			G_Prg.$('hcdvMsgClose').style.display = 'block';
			G_Prg.$('hcdvMsgBackBtn').style.display = 'none';
			G_Prg.$('hcdvMsgClose').onclick = function () {
				document.body.style.overflow = 'auto';
				_showDoneTest();	//设置返回按钮点击事
			};
			var pyHtml = G_Prg.$('content').innerHTML;
			G_Prg.$('hcdialogBody').innerHTML = pyHtml.replace('searchDoneTest', 'searchDoneTest3');
			G_Prg.$('searchDoneTest3').onclick = function () {
				_closeUserScore = 1;
				_showDoneTest();
			}; //设置查看答题情况按钮点击事
		}else{
			G_Prg.$('marking').onclick = function () {
				_markingClick();
			}; //批阅 单击事件设置
		}
		G_Prg.$('titleCard').onclick = function () {
			_showTitleCard();
        };	//显示题卡单击事件
        //G_Prg.$('fav').onclick = function () {
        //    _addFav();
        //}; //设置收藏按钮点击事件
        //G_Prg.$('removeFav').onclick = function () {
        //    _removeFav();
        //}; //设置取消收藏按钮点击事件
        //G_Prg.$('note').onclick = function () {
        //    _myNoteClick();
        //}; //设置用户笔记按钮点击事件
        //G_Prg.$('editNote').onclick=function(){
        //    _editNote();
        //};	//编辑笔记
        //G_Prg.$('saveNote').onclick=function(){
        //    _saveNote();
        //};	//保存笔记
    }
    /********************************************************************************
     函数名：_setTestEvent
     功能：设置选项的单击事件
     输入参数:buttonID 提交答案的按钮ID；answerID 用户输入内容所在的文本框的id； itemNameID 选项所在的a标签的ID; itemTextID 选项的文本内容所在的span标签的ID; resultID 显示正确答案和解题思路的div层的ID;
     返回值：无
     创建信息：黎萍（2014-06-06）
     修改记录：无
     审查人：陈昊（2014-06-26）
     *******************************************************************************/
    function _setTestEvent(curTest) {
         var idArr = _setID(curTest);
        var itemNameID = idArr['itemID']; //选项所在的a标签的ID
        var resultID = idArr['resultID']; //显示正确答案和解题思路的div层的ID
        var buttonID = idArr['buttonID']; //提交答案的按钮
        var answerID = idArr['answerID']; //简答题、填空题，正确答案的div层ID
        var moveNextDiv = idArr['moveNextDiv'];	//下一题所在div层按钮ID
        var textarea = idArr['textarea'];
        var testType = curTest.testType; //试题类型
        var subTestType = curTest.subTestType; //针对A3和B题型的小题的试题类型进行定义
        var itemLen = curTest.selectedItems.length;
        if (testType === 'ATEST' || testType === 'PDTEST' || subTestType === '单项') {
            //设置radio的onclick事件
            for (var i = 0; i < itemLen; i++) {
                G_Prg.$(itemNameID + i).onclick = function () {
					//G_UserAction.addUserAction('selItem');
                    //if(_fromUrl !== 'simulatedExam.html'){
                    if(!_isExam){
                        _radioClick(curTest,this.lang);
                    }else{
                        _radioSelected(curTest,itemNameID, this.lang);//如果是从模拟考场进入做题界面，更改单选题的单击事件
                    }
					_countStudyRate();	//设置进度条和题卡上的试题学习进度数据
                };
                if(!_IsDisabled){
                    G_Prg.$(itemNameID + i).onclick = function () {};
                }
            }
        } else if (testType === 'XTEST' || subTestType === '不定项' || subTestType === '多项') {
            //设置复选框选择时的onclick事件
            for (var i = 0; i < itemLen; i++) {
                G_Prg.$(itemNameID + i).onclick = function () {
					//G_UserAction.addUserAction('selItem');
                    _checkboxSelected(curTest,itemNameID, this.lang);
					_countStudyRate();	//设置进度条和题卡上的试题学习进度数据
                };
                if(!_IsDisabled){	//批阅后禁止答题
                    G_Prg.$(itemNameID + i).onclick = function () {};
                }
            }
            //if(_fromUrl !== 'simulatedExam.html'){
            if(!_isExam){
                //设置checkbox中button的onclick事件
                function _checkClick(){
                    for (var i = 0; i < itemLen; i++){
						var className = G_Prg.$(itemNameID + i).className.split(' ')[0];
                        if(className === 'checkboxSelectedImg' || className === 'checkboxRightImg' || className === 'checkboxErrorImg'){
                            return true;
                        }
                    }
                    return false;
                }
                G_Prg.$(buttonID).onclick = function () {
					//G_UserAction.addUserAction('commitBtn');
                    if(!_checkClick()){
                        G_Prg.alert('请您选择答案！');
                        return;
                    }
                    _submitCheckboxClick(curTest,itemNameID);
                };
                if(!_IsDisabled){	//批阅后禁止答题
                    G_Prg.$(buttonID).onclick = function () {};
                    G_Prg.$(buttonID).style.color = '#999';	//将按钮灰掉
                }
            }else{
                G_Prg.$(buttonID).style.display = 'none';	//模拟考场，多选题的提交答案按钮隐藏掉
            }
        } else if (testType === 'JDTEST') {
            if(_gAllTest.getAction(curTest.testNO-1) === 'lookAnswer'){	//隐藏按钮显示
                G_Prg.$(buttonID).innerHTML = '<img src="../img/watch-answer.png"/>隐藏答案';
            }else{	//查看按钮显示
                G_Prg.$(buttonID).innerHTML = '<img src="../img/watch-answer.png"/>查看答案';
            }
            G_Prg.$(buttonID).onclick = function () {
				_blurFlag = '';
				G_Prg.$(textarea).blur();
				
                if(G_Prg.$(buttonID).innerText === '查看答案'){
					//G_UserAction.addUserAction('lookBtn');
                    _seeJDTestAnswer(curTest,textarea,'isLook');
                    _gAllTest.setAction('lookAnswer');
                    G_Prg.$(buttonID).innerHTML = '<img src="../img/watch-answer.png"/>隐藏答案';
                }else{
					//G_UserAction.addUserAction('lookNoBtn');
                    G_Prg.$(buttonID).innerHTML = '<img src="../img/watch-answer.png"/>查看答案';
					_gAllTest.setAction('lookNoAnswer');
                }
				_countStudyRate();	//设置进度条和题卡上的试题学习进度数据
				_showCurTest(curTest);
            };
			G_Prg.$(textarea).onblur = function () {
				_blurFlag = 'blur';
				_seeJDTestAnswer(curTest,textarea);
                //G_Prg.$(buttonID).innerHTML = '隐藏答案';
			};
			
            //if(_fromUrl === 'simulatedExam.html'){
            if(_isExam){
                G_Prg.$(buttonID).style.display = 'none';	//模拟考场，简答题、填空题的查看答案按钮隐藏掉
            }
            if(!_IsDisabled){	//批阅后禁止答题
                G_Prg.$(buttonID).onclick = function () {};
				G_Prg.$(textarea).onblur = function () {};
                G_Prg.$(buttonID).style.color = '#999';	//将按钮灰掉
                G_Prg.$(textarea).disabled=true;
            }
            //文本域点击阻止冒泡
			G_Prg.$(textarea).onclick = function (event) {
				//阻止冒泡
				event = event ? event : window.event;
				event.stopPropagation();
			};
			//_countStudyRate();	//设置进度条和题卡上的试题学习进度数据
        }else if (testType === 'TKTEST'){
            G_Prg.$(buttonID).onclick = function () {
				_blurFlag = '';
				var arrLen = G_Prg.$(idArr['itemOlID']).getElementsByTagName('li').length;
				for(var i = 0;i < arrLen; i++){
					G_Prg.$(idArr['itemTextID'] + i).blur();
				}
                _seeTKTestAnswer(curTest,'isLook');
				_countStudyRate();	//设置进度条和题卡上的试题学习进度数据
				_showCurTest(curTest);
            };
			var answerArr = curTest.answer.split('；');	
			for(var i = 0;i < answerArr.length; i++){
				//输入框点击阻止冒泡
				G_Prg.$(idArr['itemTextID'] + i).onclick = function (event) {
					//阻止冒泡
					event = event ? event : window.event;
					event.stopPropagation();
				};
			
				G_Prg.$(idArr['itemTextID'] + i ).onblur = function () {
					_blurFlag = 'blur';
					_seeTKTestAnswer(curTest);
					_countStudyRate();	//设置进度条和题卡上的试题学习进度数据
				};
			}
            //if(_fromUrl === 'simulatedExam.html'){
            if(_isExam){
                G_Prg.$(buttonID).style.display = 'none';	//模拟考场，简答题、填空题的查看答案按钮隐藏掉
            }
            if(!_IsDisabled){	//批阅后禁止答题
                G_Prg.$(buttonID).onclick = function () {};
                G_Prg.$(buttonID).style.color = '#999';	//将按钮灰掉
				var arrLen = G_Prg.$(idArr['itemOlID']).getElementsByTagName('li').length;
				for(var i = 0;i < arrLen; i++){
					G_Prg.$(idArr['itemTextID'] + i).disabled=true;
					G_Prg.$(idArr['itemTextID'] + i ).onblur = function () {};
				}
            }
		}
        G_Prg.$(moveNextDiv).onclick = function () {
			if (testType === 'JDTEST'){
				//G_Prg.$('jd_textarea_'+startIndex).blur();
			}else if (testType === 'TKTEST'){
				var arrLen = G_Prg.$(idArr['itemOlID']).getElementsByTagName('li').length;
				for(var i = 0;i < arrLen; i++){
					G_Prg.$(idArr['itemTextID'] + i).blur();
				}
			}
			//G_UserAction.addUserAction('nextBtn1');
            _moveNext();
        }; //Next 下一题
    }
	/********************************************************************************
     以下为试题正确答案显示处理代码部分
     *******************************************************************************/
	/********************************************************************************
     函数名：_radioRightAnswer
     功能：（批阅后）显示单选题正确答案
     输入参数：curTest 当前试题；idArr 试题所在标签的id数组
     返回值: 无
     创建信息：黎萍（2014-09-04）
     修改记录：黎萍（2015-06-05）控制当前试题如果没有答过则不需要显示回答对错的图片
     审查人：无
     *******************************************************************************/
    function _radioRightAnswer(curTest,idArr){
		if(_gAllTest.getUserReply(curTest.testNO-1) === ''){
			G_Prg.$(idArr['checkIcon']).className = 'checkIcon-wrapper';
		}
        if(!_IsShowRightAnswer){
			return;	
		}
		var itemNameID = idArr['itemID']; //选项所在的a标签的ID
		var resultID = idArr['resultID']; //显示正确答案和解题思路的div层的ID
		var testType = curTest.testType; //试题类型
		var subTestType = curTest.subTestType; //针对A3和B题型的小题的试题类型进行定义
		var itemLen = curTest.selectedItems.length;
		for (var i = 0; i < itemLen; i++) {
			if (G_Prg.$(itemNameID + i).lang === curTest.answer) {
				G_Prg.$(itemNameID + i).className = 'radioDefaultImg rightAnswer'; //改变正确答案的字体样式
				G_Prg.$(idArr['itemID'] + i ).style.display = 'block'
			}
		}  
    }
	/********************************************************************************
     函数名：_radioRightAnswer
     功能：（批阅后）显示多选题正确答案
     输入参数：curTest 当前试题；idArr 试题所在标签的id数组
     返回值: 无
     创建信息：黎萍（2014-09-04）
     修改记录：黎萍（2015-06-05）控制当前试题如果没有答过则不需要显示回答对错的图片
     审查人：无
     *******************************************************************************/
    function _checkboxRightAnswer(curTest,idArr) { 
		if(_gAllTest.getUserReply(curTest.testNO-1) === ''){
			G_Prg.$(idArr['checkIcon']).className = 'checkIcon-wrapper';
		}
        if(!_IsShowRightAnswer){
			return;	
		}
		var itemNameID = idArr['itemID']; //选项所在的a标签的ID
		var resultID = idArr['resultID']; //显示正确答案和解题思路的div层的ID
		var testType = curTest.testType; //试题类型
		var subTestType = curTest.subTestType; //针对A3和B题型的小题的试题类型进行定义
		var itemLen = curTest.selectedItems.length;
		var selectedItems =  curTest.selectedItems;
		var answerIndex = ''; //正确答案的索引
		if(!answerIndex){
			for (var i = 0; i < itemLen; i++) {
				if (curTest.answer.indexOf(G_Prg.$(itemNameID + i).lang) >= 0) {
					answerIndex += i + ','; //取得正确答案的checkbox的索引
				}
			}
		}
		if(answerIndex){
			answerIndex = answerIndex.split(',');
		}
		if (answerIndex[answerIndex.length - 1] === '') {
			answerIndex.pop();
		}
		for (var a = 0; a < answerIndex.length; a++) {
			G_Prg.$(itemNameID + answerIndex[a]).style.display = 'block';
			G_Prg.$(itemNameID + answerIndex[a]).lang = selectedItems[answerIndex[a]].ItemName;
			G_Prg.$(itemNameID + answerIndex[a]).innerHTML = selectedItems[answerIndex[a]].ItemName + '.' + selectedItems[answerIndex[a]].Content.replace(/(^\s+)|(\s+$)/g,"");//去掉前后空格
			G_Prg.$(itemNameID + answerIndex[a] ).className = 'checkboxDefaultImg rightAnswer';
		}  
    }
	/********************************************************************************
     以下为章节练习试题单击事件处理代码部分
     *******************************************************************************/
	/********************************************************************************
	功能：填空题‘查看答案’按钮单击事件设置
	输入参数：curTest 当前试题,flag 标记是否点击了查看答案按钮，取值为isLook
	返回值：无
	最后修改人：黎萍（2015-01-05）
	修改记录：无
	*******************************************************************************/
	function _seeTKTestAnswer(curTest,flag){
		var idArr = _setID(curTest);
		var flagTemp = flag || 'noLook';
        var inputAnswer = ''; //用户输入的答案
		var rightAnswers = curTest.answer.split('；');		//正确答案
		var trueCount = 0;	//计算用户输入的答案正确个数
		
		for (var i = 0; i < rightAnswers.length; i++) {
			if(G_Prg.$(idArr['itemID'] + i).style.display !== 'none'){
				inputAnswer	+= G_Prg.$(idArr['itemTextID'] + i ).value+'；';
				//用户输入的答案必须与正确答案的顺序一致
				/*if(G_Prg.$(idArr['itemTextID'] + i ).value === rightAnswers[i]){
					trueCount++;	
				}*/
			}
		}
		var answerType = curTest.answerType;
		var userReplys = inputAnswer.split('；');		//用户的答案数组
		//判断，如果数组的最后一个元素为空，则将其删除
		if (userReplys[userReplys.length - 1] === '') {
			userReplys.pop();
		}
		if(answerType === 0){
			//用户输入的答案必须与正确答案的顺序一致
			for (var i = 0; i < rightAnswers.length; i++) {
				if(userReplys[i] === rightAnswers[i]){
					trueCount++;	
				}
			}
		}else{
			//用户输入的答案与正确答案的顺序不用一致
			for (var i = 0; i < userReplys.length; i++) {
				for(var j = 0; j < rightAnswers.length; j++){
					if(userReplys[i] === rightAnswers[j]){
						trueCount++;
					}	
				}
			}
		}	
        var isRight = 1;  //标记用户的答案是否正确
        if(trueCount >= rightAnswers.length){
            isRight = 0;	//回答正确
        }
        if(flagTemp === 'isLook'){
            _gAllTest.setSelected(0);
        }else if(flagTemp === 'noLook'){
            _gAllTest.setSelected(1);//标记章节练习的简答题已输入内容未点击查看答案：1 已输入 0 已提交查看答案
        }
		//if(_fromUrl === 'simulatedExam.html'){
		if(_isExam){
            _selected = 1;
			_gAllTest.setState('mock');
        }
		_gAllTest.setState('commited');	
		
        //将得到的用户数据存放入结构体当中
        _gAllTest.setUserReply(inputAnswer);
        _gAllTest.setIsRight(isRight);
		if(_viewCount===1){
            _addReplyLog(curTest,isRight,inputAnswer);	//添加答题明细记录
        }
	}
    /********************************************************************************
     函数名：_seeJDTestAnswer
     功能：对简答题，填空题，点击提交答案，在试题下方显示正确答案及解题思路
     输入参数:answerID 正确答案所在div层ID;resultID 显示正确答案和解题思路的DIV层id
     返回值：无
     创建信息：黎萍（2014-05-21）
     修改记录：黎萍（2014-05-22）修改答题后展示的答题信息样式
     修改记录：黎萍（2014-06-09）修改正确答案展示样式
     修改记录：黎萍（2014-07-15）修改答题模式，更改为查看答案，不进行用户答案的正确与否判断
     黎萍（2014-08-01）抽取验证数据的部分封装成方法，使用返回参数数组的方式
     审查人：陈昊（2014-06-26）
     *******************************************************************************/
    function _seeJDTestAnswer(curTest,textarea,flag) {
        var flagTemp = flag || 'noLook';
        if(G_Prg.$(textarea).value === ''){
            return;
        }
        var inputAnswer = (G_Prg.$(textarea).value === '') ? null : G_Prg.$(textarea).value;//用户输入的答案
        var rightAnswer = curTest.answer;
        var isRight = 1;  //标记用户的答案是否正确
        if(inputAnswer === rightAnswer){
            isRight = 0;	//标记用户回答错误
        }
        if(flagTemp === 'isLook'){
            _gAllTest.setSelected(0);
        }else if(flagTemp === 'noLook'){
            _gAllTest.setSelected(1);//标记章节练习的简答题已输入内容未点击查看答案：1 已输入 0 已提交查看答案
        }
		//if(_fromUrl === 'simulatedExam.html'){
		if(_isExam){
            _selected = 1;
			_gAllTest.setState('mock');
        }
		_gAllTest.setState('commited');	
		
        //将得到的用户数据存放入结构体当中
        _gAllTest.setUserReply(inputAnswer);
        _gAllTest.setIsRight(isRight);
		if(_viewCount===1){
            _addReplyLog(curTest,isRight,inputAnswer);	//添加答题明细记录
        }
    }
    /********************************************************************************
     函数名：_radioClick
     功能：单选按钮的单击事件，立即判断用户选择的答案是否正确
     输入参数: itemNameID 选项所在的a标签的ID; itemTextID 选项的文本内容所在的span标签的ID; resultID 显示正确答案和解题思路的div层的ID
     selectedAnswer 用户选中的答案 ;
     返回值：无
     创建信息：黎萍（2014-06-06）
     修改记录：黎萍（2014-06-09）修改判断题的答题功能
     黎萍（2014-08-01）抽取验证数据的部分封装成方法，使用返回参数数组的方式
     审查人：陈昊（2014-06-26）
     *******************************************************************************/
    function _radioClick(curTest,selectedAnswer) {
        //var curTest = _gAllTest.getCurTest(); //当前试题
        var isRight = 0; //标记用户的答案是否正确
        if (selectedAnswer === curTest.answer) {
            isRight = 0; //回答正确
        } else {
            isRight = 1; //回答错误
        }
		if(_gAllTest.getUserReply(curTest.testNO-1) !== selectedAnswer){//当用户多次点击一个选项时，控制不进行答题记录的提交
			_addReplyLog(curTest,isRight,selectedAnswer);	//添加答题明细记录	
		}
        _gAllTest.setUserReply(selectedAnswer);
        _gAllTest.setIsRight(isRight);
        _gAllTest.setState('commited');
        _showCurTest(curTest);
    }
    /********************************************************************************
     函数名：_submitCheckboxClick
     功能：提交答案的按钮的单击事件，提交多选题中选择的答案事件
     输入参数:itemNameID 选项所在的a标签的ID; itemTextID 选项的文本内容所在的span标签的ID;
     resultID 显示正确答案和解题思路的div层的ID;
     返回值：无
     创建信息：黎萍（2014-06-06）
     修改记录：黎萍（2014-06-10）修改多选答案的提交功能
     黎萍（2014-08-01）抽取验证数据的部分封装成方法，使用返回参数数组的方式
     审查人：陈昊（2014-06-26）
     *******************************************************************************/
    function _submitCheckboxClick(curTest,itemNameID) {
        _selected = 0;
        _gAllTest.setSelected(0);//标记章节练习的多选题已被选中，但是没有进行答案的提交；1 已选中 0 已提交
        var isRight = 0;
        var selectedAnswer = ''; //用户选择的答案
        var selectIndex = ''; //用户选择的选项索引
        var answerIndex = ''; //正确答案的索引
        var itemLen = curTest.selectedItems.length; //选项数组长度

        for (var i = 0; i < itemLen; i++) {
            if (G_Prg.$(itemNameID + i).className === 'checkboxSelectedImg' || G_Prg.$(itemNameID + i).className.split(' ')[0] === 'checkboxRightImg' || G_Prg.$(itemNameID + i).className.split(' ')[0] === 'checkboxErrorImg') {
                selectedAnswer += G_Prg.$(itemNameID + i).lang;
                selectIndex += i + ','; //取得当前选中的checkbox的索引
            }
            if (curTest.answer.indexOf(G_Prg.$(itemNameID + i).lang) >= 0) {
                answerIndex += i + ','; //取得正确答案的checkbox的索引
            }
        }
        var uIndex = selectIndex.split(','); //将用户选择的选项索引截取生成数组
        var aIndex = answerIndex.split(','); //将正确答案所在选项的索引截取生成数组
        //判断，如果数组的最后一个元素为空，则将其删除
        if (uIndex[uIndex.length - 1] === '') {
            uIndex.pop();
        }
        if (aIndex[aIndex.length - 1] === '') {
            aIndex.pop();
        }
        if (selectedAnswer === curTest.answer) {
            isRight = 0; //回答正确
        } else {
            isRight = 1; //回答错误
        }
		_addReplyLog(curTest,isRight,selectedAnswer);	//添加答题明细记录
        _gAllTest.setUserReply(selectedAnswer);
        _gAllTest.setIsRight(isRight);
        _gAllTest.setState('commited');
        _showCurTest(curTest);
    }
	/********************************************************************************
     以下为模拟考场试题单击事件处理代码部分
     *******************************************************************************/
    /********************************************************************************
     函数名：_radioSelected
     功能：（模拟考场）单选题的单击事件，改变选项的图标，标记为已被选中
     输入参数:itemNameID 选项所在的a标签的ID;selectedValue 用户选中的答案
     返回值：无
     创建信息：黎萍（2014-07-23）
     修改记录：无
     审查人：无
     *******************************************************************************/
    function _radioSelected(curTest,itemNameID, selectedValue){
        var selectedAnswer = ''; //用户选择的答案
        var isRight = 1;
        var itemLen = curTest.selectedItems.length;
        for (var i = 0; i < itemLen; i++) {
            G_Prg.$(itemNameID + i).className = 'radioDefaultImg'; //选中之前先将其他的样式修改为默认的灰色，实现单击效果
            if (G_Prg.$(itemNameID + i).lang === selectedValue) {
                //使用三元运算符进行判断，如果选项的样式是默认的，则使用选中样式标记改选项为已选中；如果选项的样式已经是已选中的，则修改为默认的表示已经取消选择
                var className = (G_Prg.$(itemNameID + i).className === 'radioSelectedImg') ? 'radioDefaultImg' : 'radioSelectedImg';
                G_Prg.$(itemNameID + i).className = className;
            }
            if (G_Prg.$(itemNameID + i).className === 'radioSelectedImg') {
                selectedAnswer = G_Prg.$(itemNameID + i).lang;
            }
            if(selectedAnswer === curTest.answer){
                isRight = 0;
            }
        }
        _selected = 1;
        _gAllTest.setIsRight(isRight);
        _gAllTest.setUserReply(selectedAnswer);
        _gAllTest.setState('mock');
    }
    /********************************************************************************
     函数名：_checkboxSelected
     功能：（模拟考场）复选框的单击事件，改变选项的图标，标记为已被选中
     输入参数:itemNameID 选项所在的a标签的ID;selectedValue 用户选中的答案
     返回值：无
     创建信息：黎萍（2014-06-06）
     修改记录：无
     审查人：陈昊（2014-06-26）
     *******************************************************************************/
    function _checkboxSelected(curTest,itemNameID, selectedValue) {
        var selectedAnswer = ''; //用户选择的答案
        var isRight = 1;
        var itemLen = curTest.selectedItems.length;
        for (var i = 0; i < itemLen; i++) {
            var optionID = G_Prg.$(itemNameID + i);
            if (optionID.lang === selectedValue) {
                //提交答案后，再答题，点击取消当前答案图标为默认图标
                if (optionID.className.split(' ')[0] === 'checkboxRightImg') {
                    optionID.className = 'checkboxDefaultImg rightAnswer';
                } else if (optionID.className.split(' ')[0] === 'checkboxErrorImg') {
                    optionID.className = 'checkboxDefaultImg errorAnswer';
                }else{
                    //使用三元运算符进行判断，如果选项的样式是默认的，则使用选中样式标记改选项为已选中；如果选项的样式已经是已选中的，则修改为默认的表示已经取消选择
                    var className1 = (optionID.className.split(' ')[0] === 'checkboxSelectedImg') ? 'checkboxDefaultImg' : 'checkboxSelectedImg';
                    optionID.className = className1;// + ' '+className2;
                }
            }
            if (optionID.className === 'checkboxSelectedImg' || optionID.className.split(' ')[0] === 'checkboxRightImg' || optionID.className.split(' ')[0] === 'checkboxErrorImg') {
                selectedAnswer += optionID.lang;
            }
        }
        if (selectedAnswer === curTest.answer) {
            isRight = 0;
        }
        //if(_fromUrl === 'simulatedExam.html'){
        if(_isExam){
            _selected = 1;
            //_setState('mock');
        }else{
            _gAllTest.setSelected(1);//标记章节练习的多选题已被选中，但是没有进行答案的提交；1 已选中 0 已提交
        }
        _gAllTest.setIsRight(isRight);
        _gAllTest.setUserReply(selectedAnswer);
    }
	/********************************************************************************
     以下为模拟考场显示试题已答情况处理代码部分
     *******************************************************************************/
    /********************************************************************************
     函数名：_mockCheckboxDone
     功能：多选题已做题设置
     输入参数:itemNameID 选项所在的a标签的ID;
     返回值：无
     创建信息：黎萍（2014-07-23）
     修改记录：无
     审查人：无
     *******************************************************************************/
    function _mockCheckboxDone(curTest,idArr) {
        //if (_IsShowUserAnswer || _gAllTest.getSelected(_gAllTest.getCurIndex()) === 1 || _fromUrl === 'simulatedExam.html') {
        if (_IsShowUserAnswer || _gAllTest.getSelected(_gAllTest.getCurIndex()) === 1 || _isExam) {
            var userReply = _gAllTest.getUserReply(curTest.testNO-1); //获取用户的答案
            var itemLen = curTest.selectedItems.length; //选项数组长度
            var itemNameID = idArr['itemID'];
            for (var i = 0; i < itemLen; i++) {
                for(var j = 0; j < userReply.length; j++){
                    if (G_Prg.$(itemNameID + i).lang === userReply.substr(j,1)) {
                        G_Prg.$(itemNameID + i).className = 'checkboxSelectedImg';
                    }
                }
            }
        }
    }
    /********************************************************************************
     函数名：_mockRadioDone
     功能：单选题已做题设置
     输入参数: curTest 当前试题,idArr 页面标签id哈希表
     返回值：无
     创建信息：黎萍（2014-07-23）
     修改记录：无
     审查人：无
     *******************************************************************************/
    function _mockRadioDone(curTest,idArr) {
        if (_IsShowUserAnswer) {
            var userReply = _gAllTest.getUserReply(curTest.testNO-1); //获取用户的答案
            var itemLen = curTest.selectedItems.length; //选项数组长度
            var itemNameID = idArr['itemID'];
            for (var i = 0; i < itemLen; i++) {
                if (G_Prg.$(itemNameID + i).lang === userReply) {
                    G_Prg.$(itemNameID + i).className = 'radioSelectedImg';
                }
            }
        }
    }
	/********************************************************************************
	功能：模拟考场设置显示填空题已做题信息
	输入参数：curTest 当前试题,idArr 页面标签id哈希表
	返回值：无
	最后修改人：黎萍（2015-01-07）
	修改记录：无
	*******************************************************************************/
	function _mockTkDone(curTest,idArr){
		if(_IsShowUserAnswer){
			var userReply = _gAllTest.getUserReply(curTest.testNO-1); //获取用户的答案
			var userReplys = userReply.split('；');		//正确答案
			//判断，如果数组的最后一个元素为空，则将其删除
			if (userReplys[userReplys.length - 1] === '') {
				userReplys.pop();
			}
			for (var i = 0; i < userReplys.length; i++) {
				G_Prg.$(idArr['itemTextID'] + i).value = userReplys[i];
			}
		}	
	}
    /********************************************************************************
     函数名：_checkboxDone
     功能：多选题已做题设置
     输入参数:itemNameID 选项所在的a标签的ID; itemTextID 选项的文本内容所在的span标签的ID;
     resultID 显示正确答案和解题思路的div层的ID ;
     返回值：无
     创建信息：黎萍（2014-06-11）
     修改记录：无
     审查人：陈昊（2014-06-26）
     *******************************************************************************/
    function _checkboxDone(curTest, idArr){
        if(!_IsShowRightAndWrong){
            return;
        }
		var checkIcon = idArr['checkIcon'];	//标记回答错误与否的图片
        var itemNameID = idArr['itemID']; //选项所在的a标签的ID
        var userReply = _gAllTest.getUserReply(curTest.testNO-1); //获取用户的答案
        var isRight = _gAllTest.getIsRight(curTest.testNO-1); //获取标记用户的回答是否正确
        var selectIndex = ''; //用户选择的选项索引
        var answerIndex = ''; //正确答案的索引
        var itemLen = curTest.selectedItems.length; //选项数组长度
        var uIndex = []; //将用户选择的选项索引截取生成数组
        var aIndex = []; //将正确答案所在选项的索引截取生成数组
        //用户已经进行了做题操作
        if (userReply !== '') {
            for (var i = 0; i < itemLen; i++) {
                if (userReply.indexOf(G_Prg.$(itemNameID + i).lang) >= 0) {
                    selectIndex += i + ','; //取得当前选中的checkbox的索引
                }
                if (curTest.answer.indexOf(G_Prg.$(itemNameID + i).lang) >= 0) {
                    answerIndex += i + ','; //取得正确答案的checkbox的索引
                }
            }
            uIndex = selectIndex.split(',');
            aIndex = answerIndex.split(',');
            //判断，如果数组的最后一个元素为空，则将其删除
            if (uIndex[uIndex.length - 1] === '') {
                uIndex.pop();
            }
            if (aIndex[aIndex.length - 1] === '') {
                aIndex.pop();
            }
            //初始将所有正确答案的字体颜色变为绿色
            for (var a = 0; a < aIndex.length; a++) {
                G_Prg.$(itemNameID + aIndex[a]).className = 'checkboxDefaultImg rightAnswer';
            }
            for (var u = 0; u < uIndex.length; u++) {
                if (curTest.answer.indexOf(G_Prg.$(itemNameID + uIndex[u]).lang) >= 0) { //用户答案中包含了正确的答案
                    G_Prg.$(itemNameID + uIndex[u]).className = 'checkboxRightImg rightAnswer';
                } else {
                    G_Prg.$(itemNameID + uIndex[u]).className = 'checkboxErrorImg errorAnswer';
                }
				if(_gAllTest.getSelected(curTest.testNO-1) === 1){
					G_Prg.$(itemNameID + uIndex[u]).className = 'checkboxSelectedImg';
				}
            }
			if (isRight === 0 && _gAllTest.getSelected(curTest.testNO-1) === 0) { //用户回答正确
				G_Prg.$(checkIcon).className = 'checkIcon-wrapper-right';
			}else if (isRight === 1){
				G_Prg.$(checkIcon).className = 'checkIcon-wrapper-false';
			}else if(_gAllTest.getSelected(curTest.testNO-1) === 1){
				G_Prg.$(checkIcon).className = 'checkIcon-wrapper';
			}
        }
    }
    /********************************************************************************
     函数名：_radioDone
     功能：单选题已做题设置
     输入参数: itemNameID 选项所在的a标签的ID; itemTextID 选项的文本内容所在的span标签的ID;
     resultID 显示正确答案和解题思路的div层的ID ;
     返回值：无
     创建信息：黎萍（2014-06-11）
     修改记录：黎萍（2014-07-23）修改当以模拟考场进入做题界面时，单选题以选中样式展示
     审查人：陈昊（2014-06-26）
     *******************************************************************************/
    function _radioDone(curTest, idArr) {
        if (!_IsShowRightAndWrong) {
            return;
        }
		var checkIcon = idArr['checkIcon'];	//标记回答错误与否的图片
        var itemNameID = idArr['itemID'];
        var userReply = _gAllTest.getUserReply(curTest.testNO-1); //获取用户的答案
        var isRight = _gAllTest.getIsRight(curTest.testNO-1); //获取标记用户的回答是否正确
        var itemLen = curTest.selectedItems.length; //选项数组长度
        if (userReply !== '') {
            if (isRight === 0) { //用户回答正确
                for (var i = 0; i < itemLen; i++) {
                    if (G_Prg.$(itemNameID + i).lang === userReply) {
                        G_Prg.$(itemNameID + i).className = 'radioRightImg rightAnswer'; //指定类样式
                    }
                }
				G_Prg.$(checkIcon).className = 'checkIcon-wrapper-right';
            } else if (isRight === 1){ //回答错误
                for (var i = 0; i < itemLen; i++) {
                    if (G_Prg.$(itemNameID + i).lang === userReply) {
                        G_Prg.$(itemNameID + i).className = 'radioErrorImg errorAnswer'; //显示当前被判定为错的图片
                    }
                    if (G_Prg.$(itemNameID + i).lang === curTest.answer) {
                        G_Prg.$(itemNameID + i).className = 'radioDefaultImg rightAnswer'; //改变正确答案的字体样式
                    }
                }
				G_Prg.$(checkIcon).className = 'checkIcon-wrapper-false';
            }
        }
    }
    /********************************************************************************
     函数名：_textTKInputed
     功能：填空题的已做题显示设置
     输入参数: itemTextID 用户输入的文本内容所在的textarea标签的ID;answerID 正确答案所在div层的id；
     resultID 显示正确答案和解题思路的div层的ID;allTest TestData函数对象
     返回值：无
     创建信息：黎萍（2014-06-11）
     修改记录：无
     *******************************************************************************/
    function _textTKInputed(curTest,idArr){
		if(_gAllTest.getUserReply(curTest.testNO-1) === ''){
			G_Prg.$(idArr['checkIcon']).className = 'checkIcon-wrapper';
		}
        if(!_IsShowRightAndWrong){
            return;
        }
        var userReply = _gAllTest.getUserReply(curTest.testNO-1);	//获取用户的答案
        var isRight = _gAllTest.getIsRight(_gAllTest.getCurIndex());	//获取标记用户的回答是否正确
		var checkIcon = idArr['checkIcon'];	//标记回答错误与否的图片
        var resultID = idArr['resultID']; //显示正确答案和解题思路的div层的ID
		
		var arrLen = G_Prg.$(idArr['itemOlID']).getElementsByTagName('li').length;
		for (var i = 0; i < arrLen; i++) {
			G_Prg.$(idArr['itemTextID'] + i ).value = ''; 
		}
		if(userReply !== ""){
			var answers = userReply.split('；');		//正确答案
			//判断，如果数组的最后一个元素为空，则将其删除
			if (answers[answers.length - 1] === '') {
				answers.pop();
			}
			for (var i = 0; i < answers.length; i++) {
				G_Prg.$(idArr['itemTextID'] + i ).value = answers[i];
			}
				
			if(_selected === 1  || _gAllTest.getSelected(_gAllTest.getCurIndex()) === 1 || _gAllTest.getAction(curTest.testNO-1) === 'lookNoAnswer'){
				G_Prg.$(resultID).style.display = "none";
			}else{
				G_Prg.$(resultID).style.display = "block"; //显示正确答案和试题解析
			}
			if (isRight === 0 && _gAllTest.getSelected(curTest.testNO-1) === 0) { //用户回答正确
				G_Prg.$(checkIcon).className = 'checkIcon-wrapper-right';
			}else if (isRight === 1){
				G_Prg.$(checkIcon).className = 'checkIcon-wrapper-false';
			}else if(_gAllTest.getSelected(curTest.testNO-1) === 1){
				G_Prg.$(checkIcon).className = 'checkIcon-wrapper';
			}
		}
    }
	/********************************************************************************
     函数名：_textJDInputed
     功能：简答题的已做题显示设置
     输入参数: itemTextID 用户输入的文本内容所在的textarea标签的ID;answerID 正确答案所在div层的id；
     resultID 显示正确答案和解题思路的div层的ID;allTest TestData函数对象
     返回值：无
     创建信息：黎萍（2014-06-11）
     修改记录：无
     *******************************************************************************/
    function _textJDInputed(curTest,idArr){
        if(!_IsShowRightAndWrong){
            return;
        }
        var userReply = _gAllTest.getUserReply(curTest.testNO-1);	//获取用户的答案
        //var isRight = _gAllTest.getIsRight(_gAllTest.getCurIndex());	//获取标记用户的回答是否正确
        var textarea = idArr['textarea'];
        var resultID = idArr['resultID']; //显示正确答案和解题思路的div层的ID
        G_Prg.$(textarea).value = "";
		if(userReply !== ""){
			G_Prg.$(textarea).value = userReply;	//用户输入的答案
			if(_selected === 1  || _gAllTest.getSelected(_gAllTest.getCurIndex()) === 1){
				G_Prg.$(resultID).style.display = "none";
			}else{
				G_Prg.$(resultID).style.display = "block"; //显示正确答案和试题解析
			}
		}
    }
    /********************************************************************************
     函数名：_aboveAll
     功能：以上都是的处理
     输入参数:无
     返回值：无
     创建信息：周江（2014-08-21）
     修改记录：无
     审查人：无
     *******************************************************************************/
    function _aboveAll(){
        $('.exam:visible ul').find('li[lang!=""]').each(function(){
            if($(this).hasClass('rightAnswer')&&($(this).text().split('.')[1]==='以上都是')){
                $('.exam:visible ul').find('li[lang!=""]').css('display','block');
            }
        });
    }
	/********************************************************************************
     函数名：_countStudyRate
     功能：计算学习进度，即题卡和试题上方进度条的完成情况及正确率
     输入参数: 无
     返回值：无
     创建信息：黎萍（2015-06-04）
     修改记录：黎萍（2015-06-05）增加控制，模拟考场时不需要显示题卡和进度条上的正确率
     审查人：无
     *******************************************************************************/
	function _countStudyRate(){
		var scoresjson = _gAllTest.calculateScores(); //接收分数的json数据
		G_Prg.$('Card-countDown').innerHTML = scoresjson.notDoNum;	//题卡上剩余的试题数量
		G_Prg.$('curPageNum').innerHTML = scoresjson.doneNum;	//进度条上的已完成试题数量
		var bar = parseInt((scoresjson.doneNum/scoresjson.testCount)*100);
		G_Prg.$('progressBar').style.width = bar+'%';	//进度条，进度条的计算：已完成的试题数量/试题总数
		//if(_fromUrl !== 'simulatedExam.html'){
		//if(_isExam){
		//	G_Prg.$('Card-pctRight').innerHTML = parseInt((scoresjson.correctRate)*100) + '%';	//题卡上的正确率
		//	G_Prg.$('barRate').innerHTML = parseInt((scoresjson.correctRate)*100) + '%';	//进度条上的正确率
		//}0
	}
	/********************************************************************************
     函数名：_showTitleCard
     功能：显示题卡
     输入参数: 无
     返回值：无
     创建信息：黎萍（2014-07-24）
     修改记录：无
     审查人：无
     *******************************************************************************/
    function _showTitleCard(){
		var openFlag = G_Prg.$('Card-Open-Title');
		var closeFlag = G_Prg.$('Card-Close-Title');
		var card= G_Prg.$('titleCard-wrapper');
		if(openFlag.style.display === 'block'){
			_createTitleCard();	//创建、显示题卡;
			closeFlag.style.display = 'block';
			openFlag.style.display = 'none';
            var bottom='250px';
			//当题量很少时，控制题卡框架的高度自适应题卡内容高度
			if(parseInt(G_Prg.$('tk').scrollHeight)<250){
                bottom = G_Prg.$('tk').offsetHeight+'px';
			}
		}else{
			closeFlag.style.display = 'none';
			openFlag.style.display = 'block';
            bottom='0px';
		}
        $('#titleCard-wrapper').animate({
            "bottom": bottom
        },80);
	}
    /********************************************************************************
     函数名：_createTitleCard
     功能：创建、显示题卡
     输入参数: 无
     返回值：无
     创建信息：黎萍（2014-07-09）
     修改记录：无
     审查人：无
     *******************************************************************************/
    function _createTitleCard(){
		G_Prg.$('cardContent').innerHTML = '';
        var arrAllTest = _gAllTest.getArrAllTest();
        //根据试题数量循环生成题卡
        var ulTag = document.createElement('ul');
        for(var i = 0; i < arrAllTest.length; i++){
            var userReply = arrAllTest[i].userReply; //用户的答案
            var isRight = arrAllTest[i].isRight; //是否回答正确
            var selected = arrAllTest[i].selected;	//记录当前试题选项是否已被选中，但是没有进行答案的提交
            var liTag = document.createElement('li');
            //用户的答案不为空，说明用户进行了选择，则修改题卡的样式为被选中的样式
            if(userReply !== ''){
                if(isRight === false || _selected === 1 || selected === 1){
                    liTag.className = 'card_Answered';	 //用户选择了答案，并未提交答案
                }else if(isRight === 0){
                    liTag.className = 'card_Right';	//回答正确，则调用正确的样式
                }else if(isRight === 1){
                    liTag.className = 'card_Error';	//回答错误，则调用错误的样式
                }
            }else{
                liTag.className = 'card_NoAnswer';
            }
            var curTest = _gAllTest.getCurTest(); //当前试题
            if(arrAllTest[i].testNO === curTest.testNO){
                liTag.style.border = '2px solid #000';
            }
            liTag.id = arrAllTest[i].testNO;	//将试题编号设置为li标签的ID
            liTag.onclick = function () {
                G_DialogContent.dispose();
                _testNOClick(this.id);
            };
            liTag.innerHTML = ((_curPage - 1) * 50 + arrAllTest[i].testNO);	//将试题编号
            ulTag.appendChild(liTag);
        }
        G_Prg.$('cardContent').appendChild(ulTag);
		var cardSpace = document.createElement('div');
        cardSpace.id = 'cardSpace';
        cardSpace.style.width = '95%';
        cardSpace.style.height = '30px';
        cardSpace.style.float = 'left';
        G_Prg.$('cardContent').appendChild(cardSpace);
        /********************************************************************************
         函数名：_testNOClick
         功能：设置题卡的单击事件
         输入参数: 无
         返回值：无
         创建信息：黎萍（2014-07-09）
         修改记录：无
         审查人：无
         *******************************************************************************/
        function _testNOClick(curTestNO){
            _gAllTest.move(curTestNO-1);	//设置当前试题编号
            _init();
			_changeCardBorder();	//控制当前题卡的边框颜色
            _changeCardColor();
            _aboveAll();
        }

    }
    /********************************************************************************
     函数名：_changeCardColor
     功能：改变题卡的颜色
     输入参数:无
     返回值：无
     创建信息：周江（2015-06-09）
     修改记录：无
     审查人：无
     *******************************************************************************/
    function _changeCardColor(){
        var arrAllTest = _gAllTest.getArrAllTest();
        for(var i = 0; i < arrAllTest.length; i++){
            var userReply = arrAllTest[i].userReply; //用户的答案
            var isRight = arrAllTest[i].isRight; //是否回答正确
            var selected = arrAllTest[i].selected;	//记录当前试题选项是否已被选中，但是没有进行答案的提交
            var liTag=G_Prg.$(i+1+'');
            if(userReply !== ''){
                if(isRight === false || _selected === 1 || selected === 1){
                    liTag.className = 'card_Answered';	 //用户选择了答案，并未提交答案
                }else if(isRight === 0){
                    liTag.className = 'card_Right';	//回答正确，则调用正确的样式
                }else if(isRight === 1){
                    liTag.className = 'card_Error';	//回答错误，则调用错误的样式
                }
            }else{
                liTag.className = 'card_NoAnswer';
            }
           }

    }
	/********************************************************************************
     函数名：_changeCardBorder
     功能：改变当前题卡的卡号边框颜色
     输入参数:无
     返回值：无
     创建信息：黎萍（2015-06-05）
     修改记录：无
     审查人：无
     *******************************************************************************/
	function _changeCardBorder(){
		var arrAllTest = _gAllTest.getArrAllTest();
		var curTest = _gAllTest.getCurTest();
		for(var i = 0; i < arrAllTest.length;i ++){
			var cardNO = arrAllTest[i].testNO;
			if(cardNO === curTest.testNO){
				G_Prg.$(cardNO).style.border = '2px solid #000';
			}else{
				G_Prg.$(cardNO).style.border = '';
			}
		}
	}
    /********************************************************************************
     函数名：_goBackDir
     功能：返回章节目录界面
     输入参数：flag 标记是哪个界面调用改函数
     返回值：无
     创建信息：黎萍（2014-06-12）
     修改记录：黎萍（2014-06-16）增加评分界面退出功能
     修改记录：黎萍（2014-07-04）增加页面跳转参数sbjID 科目id,srcID 来源id
     韦友爱（2014-07-24）删除页面跳转参数sbjID 科目id,srcID 来源id
     删除输入参数sbjID 科目id,srcID 来源id
	 黎萍（2015-05-12）增加对视频返回做题页面后的路径处理
     审查人：陈昊（2014-06-26）
     *******************************************************************************/
    function _goBackDir(flag) {
        var scoresjson = _gAllTest.calculateScores(); //接收分数的json数据
        var fromType = G_Prg.getQueryString('fromType');

        if(!_fromUrl){
            if ( scoresjson.doneNum === 0) {
                window.location.href = 'chapterMenu.html?fromUrl=doExam.html';
            }else {
                var msg = '确定要退出答题界面吗？';
                G_Prg.confirm(msg, function () {
                    //_gAllTest.saveStudyDataToLs();
                    window.location.href = 'chapterMenu.html?fromUrl=doExam.html';
                });
            }
            return;
        }else{
            var msg = '确定要退出答题界面吗？';
            G_Prg.confirm(msg, function () {
                //_gAllTest.saveStudyDataToLs();
                window.location.href = _fromUrl+'?fromUrl=doExam.html';
            });
        }
    }
	/********************************************************************************
	功能：点击批阅按钮，弹出提示：是否交卷评分，实现批阅功能
	输入参数：无
	返回值：无
	最后修改人：黎萍（2014-12-23）
	修改记录：已经批阅后，禁止再操作批阅
	*******************************************************************************/
    function _markingClick() {
		if(_gAllTest.getState(_gAllTest.getCurIndex()) === 'marked'){
			G_Prg.alert('请不要重复批阅！');
			return;	
		}
        var scoresjson = _gAllTest.calculateScores(); //接收分数的json数据
        var msg = '';
        if ( scoresjson.doneNum === 0) {
            msg = '请您先答题，再批阅！';
            G_Prg.alert(msg);
            return;
        }
        if(_isExam){//考试模式
            var notDoNum = scoresjson.notDoNum;
            var msg = '交卷后无法修改答案，确定交卷？';
            if(notDoNum) {//存在题目未答
                msg = '还有' + notDoNum + '题未做，交卷后不可返回作答，确定批阅试题？';
                G_Prg.confirm(msg, function () {
                    clearTimeout(timer);
                    saveUserScore();
                    location.href = 'default.html';
                });
                return;
            }
            G_Prg.confirm(msg, function () {
                clearTimeout(timer);
                saveUserScore();
                location.href = 'default.html';
            });
        }else{//练习模式
            var notDoNum = scoresjson.notDoNum;
            var msg = '批阅后无法更改答案，确定批阅试卷？';
            if(notDoNum) {//存在题目未答
                msg = '还有' + notDoNum + '题未做，批阅后不可返回作答，确定批阅试题？';
                //G_Prg.confirm(msg, function () {
                //    clearTimeout(timer);
                //    location.href = 'default.html';
                //});
                //return;
            }
            G_Prg.confirm(msg, function () {
                clearTimeout(timer);
                G_Prg.$('marking').innerHTML = '<img src="../img/marking.png" alt="" title="" />已交卷';
                _selected = 0;
                _blurFlag = '';
                G_DialogContent.dispose();
                G_Prg.htmlContent('500px', '350px', '', _showScoreLayer(), true);
                G_Prg.$('hcdvMsgTitle').innerHTML = '练习统计';
                G_Prg.$('hcdvMsgClose').style.display = 'block';
                G_Prg.$('hcdvMsgBackBtn').style.display = 'none';
                G_Prg.$('hcdvMsgClose').onclick = function () {
                    document.body.style.overflow = 'auto';
                    _showDoneTest();	//设置返回按钮点击事
                };
                var pyHtml = G_Prg.$('content').innerHTML;
                G_Prg.$('hcdialogBody').innerHTML = pyHtml.replace('searchDoneTest', 'searchDoneTest2');
                G_Prg.$('searchDoneTest2').onclick = function () {
                    _showDoneTest();
                }; //设置查看答题情况按钮点击事
                var arrAllTest = _gAllTest.getArrAllTest();
                //章节练习的多选题已被选中，但是没有进行答案的提交,在批阅后添加答题明细记录
                for(var i = 0; i < arrAllTest.length; i++){
                    if(arrAllTest[i].selected === 1){
                        if(arrAllTest[i].isRight === 1 || arrAllTest[i].isRight === 0 ){
                            _addReplyLog(_gAllTest.getTest(i),arrAllTest[i].isRight, arrAllTest[i].userReply);
                        }
                    }
                }
                for(var i = 0; i < arrAllTest.length; i++){
                    if(arrAllTest[i].selected === 1){
                        arrAllTest[i].selected = 0;//标记章节练习的多选题已被选中，但是没有进行答案的提交；1 已选中 0 已提交
                    }
                }
                //clearTimeout(timer);
                //location.href = 'default.html';

            });
        }
        return;
        var scoresjson = _gAllTest.calculateScores(); //接收分数的json数据
        var msg = '';
        if ( scoresjson.doneNum === 0) {
            msg = '请您先答题，再批阅！';
            G_Prg.alert(msg);
        } else {
            msg = '确定批阅试题？';
            G_Prg.confirm(msg, function () {
				clearTimeout(timer);
				G_Prg.$('marking').innerHTML = '<img src="../img/marking.png" alt="" title="" />已交卷';
                _selected = 0;
				_blurFlag = '';
                var arrAllTest = _gAllTest.getArrAllTest();
                for(var i = 0; i < arrAllTest.length; i++){
                    if(arrAllTest[i].selected === 1){
                        arrAllTest[i].selected = 0;//标记章节练习的多选题已被选中，但是没有进行答案的提交；1 已选中 0 已提交
                    }
                }
                G_DialogContent.dispose();
                G_Prg.htmlContent('500px', '350px', '', _showScoreLayer(), true);
				G_Prg.$('hcdvMsgTitle').innerHTML = '练习统计';
                G_Prg.$('hcdvMsgClose').style.display = 'block';
                G_Prg.$('hcdvMsgBackBtn').style.display = 'none';
                G_Prg.$('hcdvMsgClose').onclick = function () {
                    document.body.style.overflow = 'auto';
                    _showDoneTest();	//设置返回按钮点击事
                };
                var pyHtml = G_Prg.$('content').innerHTML;
				if(_isExam === 1){
					G_Prg.$('hcdialogBody').innerHTML = pyHtml.replace('showExam_box1', 'showExam_box1_1');
					G_Prg.$('showExam_box1_1').onclick = function () {
						window.location.href = 'examDefault.html?fromUrl=doExam.html';
					}; //设置考试结束按钮点击事
				}else{
					G_Prg.$('hcdialogBody').innerHTML = pyHtml.replace('searchDoneTest', 'searchDoneTest2');
					G_Prg.$('searchDoneTest2').onclick = function () {
						_showDoneTest();
					}; //设置查看答题情况按钮点击事
				}
				var arrAllTest = _gAllTest.getArrAllTest();
				//if(_fromUrl === 'simulatedExam.html'){//考试，保存用户考试结果、考试成绩
				if(_isExam){//考试，保存用户考试结果、考试成绩
					saveUserScore();
				}else{//作业，保存用户答题记录
					//章节练习的多选题已被选中，但是没有进行答案的提交,在批阅后添加答题明细记录
					for(var i = 0; i < arrAllTest.length; i++){
						if(arrAllTest[i].selected === 1){
							if(arrAllTest[i].isRight === 1 || arrAllTest[i].isRight === 0 ){
								_addReplyLog(_gAllTest.getTest(i),arrAllTest[i].isRight, arrAllTest[i].userReply);
							}
						}
					}
					for(var i = 0; i < arrAllTest.length; i++){
						if(arrAllTest[i].selected === 1){
							arrAllTest[i].selected = 0;//标记章节练习的多选题已被选中，但是没有进行答案的提交；1 已选中 0 已提交
						}
					}	
				}
            }); //确定交卷评分，显示评分弹出层
        }
    }
    function _practiceMark(scoresjson){


    }
	/********************************************************************************
	功能：存储用户考试信息
	输入参数:无
	返回值：无
	最后修改人：黎萍（2015-10-12）
	修改内容：无
	********************************************************************************/
	function saveUserScore(){
		var arrAllTest = _gAllTest.getArrAllTest();
		var jsonArr = [];
		for(var i = 0; i < arrAllTest.length; i++){
			if(arrAllTest[i].userReply !== '' && arrAllTest[i].isRight !== false){
                var childTableID = null;
                var curTest = _gAllTest.getTest(i);
                if(arrAllTest[i].type==='BTEST' || arrAllTest[i].type==='A3TEST'){//A3、B型题获取小题ID
                    childTableID = curTest.subTestID;
                }
                jsonArr.push({
                    'testID':curTest.allTestID,
                    'childTestID':childTableID,
                    'anwerContent':arrAllTest[i].userReply
                });
			}
		}
        var useTime = parseInt(_gAllTest.getTestTime());//考试用时
        useTime = useTime - totalTime*1000;
        _gAllTest.submit(examID,jsonArr,useTime);
	}
    /********************************************************************************
     函数名：_showDoneTest
     功能：批阅界面，点击查看答题情况，返回到做题界面，显示已经做过的试题
     输入参数：无
     返回值：无
     创建信息：黎萍（2014-06-12）
     修改记录：无
     审查人：陈昊（2014-06-26）
     *******************************************************************************/
    function _showDoneTest() {
        _gAllTest.setState('marked',1);
        G_DialogContent.dispose();
        _gAllTest.move(0);	//设置当前试题编号
        _init(0);
    }
    /********************************************************************************
     函数名：_moveNext
     功能：点击下一题，再从json中读取数据展示在界面
     输入参数：无
     返回值：无
     创建信息：黎萍（2014-05-19）
     修改记录：黎萍（2014-05-22）将试题编号作为参数传入
     韦友爱（2014-07-15）点击下一题时，将笔记内容清空，然后再init
     审查人：陈昊（2014-06-26）
     *******************************************************************************/
    function _moveNext() {
        var curTest = _gAllTest.getCurTest();
        var type = curTest.testType;
        if(type==='TKTEST'||type==='JDTEST'){
            var userReply = _gAllTest.getUserReply(curTest.testNO-1);
            if(userReply!==''){
                _addReplyLog(curTest,false,userReply);
            }
        }
        if(_gAllTest.moveNext()){
            _init(2);
        }else{
        	G_Prg.alert('已经是最后一题了！');
        }
		if(G_Prg.$('Card-Close-Title').style.display === 'block'){
			_changeCardBorder();	//控制当前题卡的边框颜色
		}
        if(G_Prg.$('Card-Open-Title').style.display==='none') {
            _changeCardColor();
        }
        _aboveAll();
    }
    /********************************************************************************
     函数名：_movePre
     功能：点击上一题，再从json中读取数据展示在界面
     输入参数：无
     返回值：无
     创建信息：黎萍（2014-05-19）
     修改记录：黎萍（2014-05-22）将试题编号作为参数传入
     韦友爱（2014-07-15）点击上一题时，将笔记内容清空，然后再init
     审查人：陈昊（2014-06-26）
     *******************************************************************************/
    function _movePre() {
        if(_gAllTest.movePre()){
             _init(1);
        }else{
            G_Prg.alert("已经是第一题了！");
        }
		if(G_Prg.$('Card-Close-Title').style.display === 'block'){
			_changeCardBorder();	//控制当前题卡的边框颜色
		}
		if(G_Prg.$('Card-Open-Title').style.display==='none') {
            _changeCardColor();
        }
        _aboveAll()
    }
    /********************************************************************************
     函数名：_showScoreLayer
     功能：显示评分的提示遮罩层
     输入参数：无
     返回值：无
     创建信息：黎萍（2014-06-16）
     修改记录：黎萍（2014-06-26）修改对成绩评定的判断
     		黎萍（2014-08-01）抽取验证数据的部分封装成方法，使用返回参数数组的方式
			黎萍（2014-12-08）控制及格率保留2位小数
     审查人：陈昊（2014-06-26）
     *******************************************************************************/
    function _showScoreLayer() {
        var scoresjson = _gAllTest.calculateScores(); //接收分数的json数据
        var scoreImg = G_Prg.$('smile-cry_img'); //成绩评定：不及格、及格、优秀
		var totalNum = scoresjson.testCount;
        var testNum = scoresjson.doneNum;
        var rightTestNum = scoresjson.rightNum;
		var allScore = scoresjson.allScore
		var userScore = scoresjson.userScore
        var correctRate = ((rightTestNum/testNum)*100).toFixed(2); //及格率
		if(_isExam === 0){
			G_Prg.$('doneCount').innerHTML = testNum; //已做试题数
			G_Prg.$('rightCount').innerHTML = rightTestNum; //答对试题数
	
			//根据正确率设置成绩描述
			if (correctRate < 60) {
				scoreImg.src = '../img/crying.png';
			} else {
				scoreImg.src = '../img/kissed.png';
			}
			if(type === 'examReplay'){
				allScore = G_Prg.getQueryString('allScore');
				userScore = G_Prg.getQueryString('userScore');
			}
			G_Prg.$('testAllScore').innerHTML = allScore; //满分
			G_Prg.$('testScore').innerHTML = userScore; //得分
			
			G_Prg.$('showExam_box1').style.display = 'none';
			G_Prg.$('showExam_box2').style.display = 'block';
			G_Prg.$('exam_score').style.display = 'none';
			G_Prg.$('test_score').style.display = '';
		}else{
			G_Prg.$('showExam_box1').style.display = 'block';
			G_Prg.$('showExam_box2').style.display = 'none';
			
			G_Prg.$('exam_score').style.display = 'block';
			G_Prg.$('test_score').style.display = 'none';
			
		}
		//var curTime = G_Prg.$('time').innerHTML;
       // G_Prg.$('testAllTime').innerHTML = curTime; //用时
    }
	/********************************************************************************
     函数名：_myTimer
     功能：设置考试计时器,控制时间到后，强制交卷同时不允许进行其他答题操作
     输入参数:无
     返回值：无
     创建信息：黎萍（2015-07-09）
     修改记录：无
     审查人：无
     *******************************************************************************/
	function _myTimer() {
        var second = (totalTime % 60) < 10 ? ('0' + parseInt(totalTime % 60)) : parseInt(totalTime%60);
        var hour = totalTime / 3600 < 10 ? ('0' + parseInt(totalTime / 3600)) : parseInt(totalTime / 3600);
        var minute = (totalTime-hour*3600)/60 < 10 ? ('0' + parseInt((totalTime-hour*3600)/60)) : parseInt((totalTime-hour*3600)/60);
        G_Prg.$('time').innerHTML = hour + ':' + minute + ':' + second;
        totalTime--;
        timer = setTimeout(_myTimer, 1000);
        if(_totalTime === 0){
            clearTimeout(timer);
            G_Prg.alert('考试时间到了，请安静地等待老师下一步安排！');
			G_Prg.$('marking').innerHTML = '<img src="../img/marking.png" alt="" title="" />已交卷';
			saveUserScore();
			_gAllTest.setState('mock_marked',1);
			_gAllTest.move(0);	//设置当前试题编号
        	_init(0);
			return;
        }
    }
    /********************************************************************************
     函数名：_addReplyLog
     功能：添加答题明细记录到数据库中
     输入参数：isRight 标记用户的回答是否正确,userReply 用户的回答
     返回值：无
     创建信息：黎萍（2015-09-17）
     修改记录：无
     审查人：无
     *******************************************************************************/
    function _addReplyLog(curTest,isRight,userReply){
		//if(_fromUrl === 'simulatedExam.html'){//考试不需要保存答题记录
		if(_isExam){//考试不需要保存答题记录
			return;
		}
		//var userID = 107;
		//var examID = 231;
        //添加答题明细记录
        _gAllTest.addReplyLog(curTest,examID,userID,userReply,isRight);
    }
    /********************************************************************************
     函数名：_addFav
     功能：添加收藏
     输入参数:无
     返回值：无
     创建信息：韦友爱（2014-07-02）
     修改记录：黎萍（2014-07-04）修改提示信息
     黎萍（2014-08-01）抽取验证数据的部分封装成方法，使用返回参数数组的方式
     审查人：无
     *******************************************************************************/
    function _addFav() {
        var curTest = _gAllTest.getCurTest(); //当前试题
		//var userID = 107;
		//var examID = 231;
        _gAllTest.addFav(curTest,examID,userID,1);
        G_Prg.popMsg('已收藏');
        _gAllTest.setFav(1);
        _setFavTestInfos();
    }
    /********************************************************************************
     函数名：_removeFav
     功能：取消收藏
     输入参数: 无
     返回值：无
     创建信息：韦友爱（2014-07-02）
     修改记录：黎萍（2014-07-04）修改提示信息
     黎萍（2014-08-01）抽取验证数据的部分封装成方法，使用返回参数数组的方式
     审查人：无
     *******************************************************************************/
    function _removeFav(){
        var curTest = _gAllTest.getCurTest(); //当前试题
		//var userID = 107;
		//var examID = 231;
        _gAllTest.addFav(curTest,examID,userID,0);
        G_Prg.popMsg('已取消收藏');
        _gAllTest.setFav(0);
        _setFavTestInfos();
    }
	
    /********************************************************************************
     函数名：_myNoteClick
     功能：用户尚未添加有笔记时，笔记按钮的点击事件
     输入参数:无
     返回值：无
     创建信息：韦友爱（2014-07-02）
     修改记录：黎萍（2014-07-06）修改函数名
     韦友爱（2014-07-16）调用封装的笔记编辑框
     廖黎（2014-07-29） 将数据处理部分放入testData中
     黎萍（2014-08-01）抽取验证数据的部分封装成方法，使用返回参数数组的方式
     审查人：无
     *******************************************************************************/
    function _myNoteClick(dragIndex){
        var curTest = _gAllTest.getCurTest(); //当前试题
		//var userID = 107;
		//var examID = 231;
       _IsShowNote=true;
		_showUserNote(curTest,true);
		return;
        var yesCallback=function (note){
			G_UserAction.addUserAction('addNoteBtn');
            if(note){
                _setMyNote(curTest, note.replace(_regerN,'[br]'),infosArr['appID'],infosArr['userID'],infosArr['userName'],infosArr['guid']);
            }else{
                setTimeout(function(){window.scrollTo(0,0);},0);
            }
        };
        var noCallback=function(){
			G_UserAction.addUserAction('cancleNoteBtn');
            setTimeout(function(){window.scrollTo(0,0);},0);
        };
        G_Prg.textarea('',yesCallback,noCallback);
        //document.body.style.overflow = 'hidden';
		G_Prg.$('tbdvMsgTitle').innerHTML = '添加笔记';
    }
    /********************************************************************************
     函数名：_updateNoteClick()
     功能：用户添加笔记之后，笔记按钮的点击事件
     输入参数:无
     返回值：无
     创建信息：韦友爱（2014-07-16）
     修改记录：廖黎（2014-07-29） 将数据处理部分放入testData中
     黎萍（2014-08-01）抽取验证数据的部分封装成方法，使用返回参数数组的方式
     审查人：无
     *******************************************************************************/
    function _updateNoteClick(dragIndex){
        var userNote = _gAllTest.getUserNote(_gAllTest.getCurIndex());
        var curTest = _gAllTest.getCurTest(); //当前试题
		//var userID = 107;
		//var examID = 231;
        if(userNote===''){
            userNote= curTest.userNote;
        }
        var yesCallback=function (note){
			//G_UserAction.addUserAction('confirmNoteBtn');
            if(note){
                _setMyNote(curTest, note.replace(_regerN,'[br]'),examID,userID,dragIndex);
            }else{
                setTimeout(function(){window.scrollTo(0,0);},0);
                G_Prg.confirm('确认要删除该笔记信息？', function(){
					//G_UserAction.addUserAction('deleteNoteBtn');
                    _deleteNote(curTest,examID,userID,dragIndex);
                });
            }
        };
        var noCallback=function(){
			//G_UserAction.addUserAction('cancleNoteBtn');
            setTimeout(function(){window.scrollTo(0,0);},0);
        };
        G_Prg.textarea(userNote.replace(new RegExp('\\[br\\]','gm'),'\n'),yesCallback,noCallback);
        //document.body.style.overflow = 'hidden';
		G_Prg.$('dialogTxtArea').onclick = function(){
			//G_UserAction.addUserAction('inputNoteTxt');
			};
    }
    /********************************************************************************
     函数名：_deleteNote
     功能：连接到deleteUserNote接口，删除当前试题的笔记内容
     输入参数: appID 软件ID
     userID 用户ID
     curTest 当前试题
     返回值：无
     创建信息：韦友爱（2014-07-14）
     修改记录：韦友爱（2014-07-16）添加调用_setNoteTestInfos()
     廖黎（2014-07-29） 将数据处理部分放入testData中，页面部分作为数据处理后的回调函数执行
     韦友爱（2014-09-18）调换添加笔记和显示他人笔记的执行顺序
     审查人：无
     *******************************************************************************/
    function _deleteNote(curTest,examID,userID,dragIndex) {
        G_Prg.popMsg('删除成功');
        _gAllTest.setUserNote(null);
        
        _refreshNoteIcon();
        _showCurTest(curTest, _gFlipsnap.currentPoint);
        _gAllTest.setMyNote(curTest, '',examID,userID);
    }
    /********************************************************************************
     函数名：_setMyNote
     功能：连接到setUserNote接口，设置当前试题的笔记内容
     输入参数: appID 软件ID
     userID 用户ID
     curTest 当前试题
     note 笔记内容
     返回值：无
     创建信息：韦友爱（2014-07-15）
     修改记录：韦友爱（2014-07-16）添加调用_setNoteTestInfos()
     廖黎（2014-07-29） 将数据处理部分放入testData中，页面部分作为数据处理后的回调函数执行
     韦友爱（2014-09-18）调换添加笔记和显示他人笔记的执行顺序
     审查人：无
     *******************************************************************************/
    function _setMyNote(curTest, note,examID,userID,dragIndex) {
        _addNote[curTest.testNO-1]=1;
        G_Prg.popMsg('保存成功');
        window.scrollTo(0, document.body.scrollHeight + 40);

        if(note&&note.length>100){
            note=note.substr(0,100);
        }
        _gAllTest.setUserNote(note);
        _gAllTest.setTime('今天');
        _refreshNoteIcon();
        setTimeout(function(){window.scrollTo(0,0);},0);
        _gAllTest.setAction('addNote');
        _showCurTest(curTest, _gFlipsnap.currentPoint);
        _gAllTest.setMyNote(curTest, note,examID,userID);
    }
	
    /********************************************************************************
     函数名：_setFavTestInfos
     功能：控制取消收藏按钮的显示与隐藏
     输入参数: 无
     返回值：无
     创建信息：黎萍（2014-07-04）
     修改记录：无
     审查人：无
     *******************************************************************************/
    function _setFavTestInfos(){
        var fav = _gAllTest.getFav(_gAllTest.getCurIndex());
        var curTest = _gAllTest.getCurTest(); //当前试题
        var curFav=0;
        if(fav===false){
            curFav=curTest.isFav;
        }else{
            curFav=fav;
        }
        if(curFav === 1){
            G_Prg.$('removeFav').style.display='block';
            G_Prg.$('fav').style.display='none';
        }else{
            G_Prg.$('removeFav').style.display='none';
            G_Prg.$('fav').style.display='block';
        }
    }

    /********************************************************************************
     函数名：_refreshNoteIcon
     功能：刷新底部笔记图标
     输入参数：无
     返回值：无
     创建信息：谢建沅（2014-08-19）
     修改记录：无
     审查人：无
     *******************************************************************************/
    function _refreshNoteIcon(){
        var curTest = _gAllTest.getCurTest(); //当前试题
        var userNote = _gAllTest.getUserNote(_gAllTest.getCurIndex());
        if(userNote===''){
            userNote=curTest.userNote;
        }
        /*if(userNote){
            //G_Prg.$('updateNote').style.display='block';
            G_Prg.$('note').style.display='none';
        } else{
            //G_Prg.$('updateNote').style.display='none';
            G_Prg.$('note').style.display='block';
        }*/
    }
    /********************************************************************************
     函数名：_listenKeyborad
     功能： 监听键盘a-z 选择对应a-z的选项
     输入参数：无
     返回值：无
     创建信息：周江（2015-05-22）
     修改记录：无
     审查人：无
     *******************************************************************************/
    function _listenKeyborad() {
        document.onkeydown = function (event) {
            var e = event || window.event || arguments.callee.caller.arguments[0];//兼容浏览器的event
            var keyCode = e.keyCode || e.which || e.charCode;
            if (keyCode === 37 || keyCode === 38) {
                if(e.preventDefault){
                    e.preventDefault();
                }else{
                    window.event.returnValue = false;
                }
                $('#movePre').trigger("click");//触发"上一题"按钮
            }
            else if (keyCode === 39 || keyCode === 40) {
                if(e.preventDefault){
                    e.preventDefault();
                }else{
                    window.event.returnValue = false;
                }

                $('#moveNext').trigger("click");//触发"下一题"按钮
            }
            else if (keyCode >= 65 && keyCode <= 90) {
                var index = keyCode - 65 + 1;//选项li的 下标（从1开始）
                $('.exam:visible ul').find(':nth-child(' + index + ')').trigger("click");
            }
        }
    }
   
}